작성
·
265
0
안녕하세요,
저는 맥북으로 vscode를 사용하여 코딩 중에 있습니다.
강의에 보면 %lld 형식지정자를 사용할 때, INT_MAX + 1을 사용하여 값을 받도록 하는데요,
저같은 경우 INT_MAX + 1이라고 넣으면 overflow가 발생하고 INT_MAX + 1LL이라고 반드시 입력을 해줘야지만 제대로 된 값이 출력됩니다.
보통 의문점이 생기면 구글링 통해서 해결하곤 하는데 이건 어떻게 검색해야 할지 감이 안 잡히네요 ㅜㅜ
아무리 생각해봐도 왜 이런 문제가 발생하는지 잘 모르겠습니다.
-------------------------------------------------
좀더 살펴보았는데요,,,
problems에 경고문이 뜨네요.
"format specifies type 'long long' but the argument has type 'int'"
그니까, argument 부분에서 이미 overflow가 발생했기 때문에 값이 -2147483648로 받아지는 것 같아요.
그런데 이 경고문을 바탕으로 보았을 때는 강의 예시에서는 어떻게 overflow가 발생하지 않을 수 있는지 궁금합니다...
go to definition에서 보면 강의에 있는 limit.h 라이브러리가 제 것과 다른데, 그 문제일 수도 있겠다 싶긴 한데요... 제 라이브러리에서는 INT_MAX가 int로 되어있고 선생님께서 사용하시는 라이브러리에는 long long으로 되어 있다든지.. 교수님의 라이브러리에는 #define처리가 되어 있었던 것 같은데 저는 그렇게 안 되어 있거든요. 이게 좀 실마리가 될 수 있을지 모르겠습니다.
답변 1
1
안녕하세요
강의에 대해 질문 주실 때 구체적인 시간대도 함께 남겨주시면 감사하겠습니다.
저도 그 이유에 대해선 잘 모르겠네요..
vscode 를 사용하신다면 vs 를 쓰는 강의와 달리 컴파일러 종류도 다를 수 있고 아무래도 환경 차이 때문인 것 같단 생각이 드네요.
경고문 보면 타입을 맞춰주는 것에 있어서 좀 더 엄격한 환경이신 것 같습니다.
답변 감사드립니다.
앞으로는 시간대를 함께 남기도록 하겠습니다!