除以整数

Rad*_*mko 5 c++ integer

我知道在分割整数时,它的默认方式是丢弃小数部分.例如,

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 = 11 > 0.执行循环体后,除以i3并i变为0,不大于0.

  • @mizo:不,在第一次输入正文之前检查条件.如果在`for`语句的第一部分设置`i = -1;`,那么将完全跳过循环体. (3认同)