【发布时间】:2012-12-15 04:00:37
【问题描述】:
考虑以下代码:
const char *s = "a b c d !";
const char *p = s;
top:for(; *p; p++) {
switch(*p) {
case 0x20:
case '\n':
goto top;
default:
putchar(*p);
}
}
有人可以解释为什么当*p 是NULL 时它会进入无限循环而不是停止吗?我想到了以下几点:当*p 是0x20 或\n 时,再次转到循环的开头,因为它测试条件并计算表达式p++。所以,我看不出它无限循环的原因,或者我真的不明白goto 语句和labels 在 C 编程语言中是如何工作的。
【问题讨论】:
-
必填:xkcd.com/292
标签: c for-loop infinite-loop goto