• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

%lld 질문드립니다.

21.11.19 22:50 작성 조회수 174

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

안소님의 프로필

안소

2021.11.20

안녕하세요 

강의에 대해 질문 주실 때 구체적인 시간대도 함께 남겨주시면 감사하겠습니다.

저도 그 이유에 대해선 잘 모르겠네요..

vscode 를 사용하신다면 vs 를 쓰는 강의와 달리 컴파일러 종류도 다를 수 있고 아무래도 환경 차이 때문인 것 같단 생각이 드네요.

경고문 보면 타입을 맞춰주는 것에 있어서 좀 더 엄격한 환경이신 것 같습니다. 

진민석님의 프로필

진민석

질문자

2021.11.20

답변 감사드립니다. 

앞으로는 시간대를 함께 남기도록 하겠습니다!