int a =100 , b=100;
a/8 * b/8;
이 연산의 결과는 144가 아닌 150이 나온다.
정수끼리나눌때 형의 승격이 발생하는모양이다.
하지만 (a/8) * (b/8)의 결과는 144 이다.
정수와 정수의 연산은 정수형으로 그대로 처리되는줄알았는데 뭔가 이해가 안된다.
*바보였다....
100/ 8 = 12.5 -> 12
12 *100 = 1200
1200 /8 = 150
그냥 순서대로 가고있는거였는데 착각했다.
후의 100/8에서 0.5가 버려지지 않느냐 버려지느냐의 순서차이었다.
'공부(IT) > c' 카테고리의 다른 글
[c]sizeof(void)는 불가능 (0) | 2016.02.07 |
---|---|
[c] 한글 문자열 (0) | 2016.02.07 |
[c] 삼항연산자는 반드시 값을 반환해야한다 (0) | 2016.02.06 |
[c] 연산자도 값을 반환한다. (0) | 2016.02.06 |
[c] 올림 버림 반올림 (0) | 2016.02.05 |