我知道在分割整数时,它的默认方式是丢弃小数部分.例如,
int i, n, calls = 0;
n = 1;
n /= 3;
printf("N = %i\n", n);
for (i = 1; i > 0; i /= 3) {
calls++;
}
printf("Calls = %i\n", calls);
Run Code Online (Sandbox Code Playgroud)
上面的代码打印:
N = 0
Calls = 1
Run Code Online (Sandbox Code Playgroud)
你能解释一下这种行为吗?
Cha*_*dia 14
1除以3 = .3333(当然重复),数学上.您可以将计算机视为截断.3333,因为它正在进行整数运算(0余数1).
该for循环执行,因为i = 1和1 > 0.执行循环体后,除以i3并i变为0,不大于0.