【发布时间】:2020-07-07 15:21:24
【问题描述】:
#include <stdio.h>
int main(void) {
char i=250;
for(i<0;i++;i=0,printf("%d", i));
return 0;
}
在这个程序中,输出为 0。据我了解,for 循环应该有第一个参数作为初始化,然后是条件,然后是增量。但是在这个问题中,初始化是最后发生的,并且代码仍然给出了有效的结果。谁能解释一下?
【问题讨论】:
-
您的代码没有多大意义。初始化步骤 (
i<0) 是一个逻辑比较,其结果被丢弃。只要i不为零,循环条件i++就会评估为真,并且如果您在增量步骤中将i设置为零,那么它打印出零也就不足为奇了。 -
标题的答案——不,你不能。
-
@EugeneSh.:显然你可以,因为有人已经这样做了。
-
@EricPostpischil 这个问题暗示“..没有后果”或“..没有改变行为”。但你当然可以挑剔。
-
@EugeneSh。我同意。这里很明显地暗示了“没有后果”。
标签: c for-loop syntax evaluation