【发布时间】:2020-07-05 19:29:42
【问题描述】:
我阅读了将十进制转换为二进制的代码。其中,在反向计算二进制数并将其存储在数组中之后,有一个 for 循环来反向打印数组。 就像,
for(i=i-1;i>=0;i++)
printf("%d",b[i]);
谁能解释一下初始化部分是如何工作的?
【问题讨论】:
-
如果循环开始前
i是-4,初始化部分将i设置为-5;如果i是2或更大,则进入(几乎)无限循环(UB) -
i的分配比以前少一个。但是,增量部分没有意义。它应该是i--,否则循环要么运行要么不运行,因为有符号整数永远不会从非负溢出到负(假设 C 中的有符号溢出是未定义的)。