int num = -2147483648;
후 실행시
C4146 단항 빼기 연산자가 부호 없는 형식에 적용되었습니다.
결과는 역시 unsigned입니다.
오류가 발생 이를 해결하기 위해선
limits.h에 있는 INT_MIN을 사용해야 하는데
어차피 그것 또한 -2147483648를 정의해둔것일텐데
왜 사용해야만할까?
컴파일러가 -214748364 또는 long long형태의 -9223372036854775808ll을
읽을때 식을 두 단계를 거쳐 처리한다. 먼저 -2147483648에서 2147483648를
먼저 읽게되는데, 2147483648은 int의 최대값인 2147483647보다 크고,
unsigned int의 최대값보다는 작으므로 unsigned int형태를 가지게 된다.
그후 부호표시 -를 읽지만 unsigned인 수에 부호를 적용할 수 없으므로 에러가 발생한다.
그러나 이러한 문제가 char, short에서는 나타나지 않음에 의문이 든다.