【发布时间】:2016-02-27 13:04:43
【问题描述】:
#include <stdio.h>
int main(){
int b = 10;
char ch = 33^b&1;
for(;"what"[b+++21];)
printf("%c",ch);
}
这段代码的输出是两个!迹象。
我无法理解它是如何工作的,for循环的条件语句是什么意思(“what”[b+++21])。
为什么循环只运行了两次?
【问题讨论】:
-
我认为这个程序会导致超出范围的数组访问,输出会不确定。
-
+++被解析为++ +。如果还是不明白,请尝试说的更具体一些 -
@MikeCAT 超出范围数组访问导致未定义行为
-
@Jean-BaptisteYunès:
printf是for循环的主体。我想,缺乏缩进是混淆的一部分。未定义的行为可能是预期的讨论主题,但我不确定。 -
多么完整的一堆……作业:(
标签: c