질문 1
제가 알기로는 둘다 4byte라고 알고 있는데, 어제 제가 누군가와 이야기를 하다가 int를 unsigned로 바꾸게 되면 문제를 해결할 수 있다고 말했더니, 상대방이 하는말이 "unsigned int로 바꾸면 약~~~~~간 용량을 더먹기는 하지만...." 이라고 말했는데, 전 둘다 같은 크기라고 생각했는데 그게 아닌가요?
질문 2
만약
int a = int_max; // int 최대값
int res = 0;
res = (a+ 1) / 2
라는 형태의 코드가 있는경우
저는 a + 1은 int가 저장 할 수 있는 값보다 크지만 /2연산 후에 res에 저장하기 때무네 overflow가 발생하지 않을거라고 생각했는데, a + 1 에서 바로 overflow가 난다고 하더군요..... 이부분도 설명좀 부탁드립니다.
- 왜 overflow가 나는건지?
- 어떤 방식으로 이 상황을 방지하는지( unsigned int // casting... 등등)