크기가 작은 경우, 그리고 특별한 suffix(접미사)를 붙이지 않은 경우, 정수 상수의 타입은 `int'입니다. 따라서 강제로 `long int'로 만들어 주기 위해서 'l' 또는 'L'을 붙입니다.
연산 도중 혹시나 일어날 지 모르는 overflow을 막기 위해서 상수를 강제로 `unsigned' type으로 만들어 주기 위해 'u' 또는 'U'를 붙입니다. 원래 `unsigned' type에서 연산 결과가 나타낼 수 없는 범위의 값이면 modulo (나머지) 연산을 통해, 어찌되었든, 표현할 수 있는 값으로 바뀌어 집니다.
대부분의 코드에서 `signed' type을 써도 큰 무리가 없지만, 원칙대로라면, `signed' type 연산에서 overflow가 일어나면, undefined behavior를 일으킵니다.
마지막으로, 다음부터는 실제 코드를 보여 주시기 바랍니다. 추측만으로 답하는 것은 한계가 있네요. :wink:
크기가 작은 경우, 그리고 특별한 suffix(접미사)를 붙이지 않은 경
크기가 작은 경우, 그리고 특별한 suffix(접미사)를 붙이지 않은 경우, 정수 상수의 타입은 `int'입니다. 따라서 강제로 `long int'로 만들어 주기 위해서 'l' 또는 'L'을 붙입니다.
연산 도중 혹시나 일어날 지 모르는 overflow을 막기 위해서 상수를 강제로 `unsigned' type으로 만들어 주기 위해 'u' 또는 'U'를 붙입니다. 원래 `unsigned' type에서 연산 결과가 나타낼 수 없는 범위의 값이면 modulo (나머지) 연산을 통해, 어찌되었든, 표현할 수 있는 값으로 바뀌어 집니다.
대부분의 코드에서 `signed' type을 써도 큰 무리가 없지만, 원칙대로라면, `signed' type 연산에서 overflow가 일어나면, undefined behavior를 일으킵니다.
마지막으로, 다음부터는 실제 코드를 보여 주시기 바랍니다. 추측만으로 답하는 것은 한계가 있네요. :wink:
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기