본문 바로가기

공부(IT)/c

[c] 정수와 정수를 나눌때의 처리과정

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