signed char ch=5;
while(ch = ch--)
printf("%d",ch);
我读了this。清楚地说明了语句和语句的结尾(;)是序列点。
所以我不明白为什么上面的那个运行无限时间并打印相同的值[5]。
答案 0 :(得分:5)
您的代码应为
signed char ch=5;
while(ch--)
printf("%d",ch);
因为ch--
已经是一项任务。您已使用ch
将ch--
重新分配到ch = ch--
之前的值,因此ch--
无效,并且您在每次迭代时获得相同的值。
答案 1 :(得分:1)
这应该适合你:
#include <stdio.h>
int main() {
signed char ch=5;
while(ch--)
printf("%d\n",ch);
return 0;
}