在for循环的第一个语句中发生了什么?我似乎无法理解为什么1 == 2是可以接受的,因为它是比较而不是值赋值。
char ch = 120;
unsigned char x = 1;
unsigned int y = 1;
for(1 == 2; ch > 0; ch++) {
printf("%d\n", ch);
x <<= 1;
y *= 2;
}
答案 0 :(得分:3)
这只是一个无用的声明,编译器将优化掉。 for
中的第一个语句不需要是一个赋值,它只是构建为循环一组值的简洁/可读方式。您可以将for
循环展开为while
,这可能会更清晰:
1 == 2; // does nothing, likely emits compiler warning.
while( ch > 0 )
{
printf("%d\n", ch);
x <<= 1;
y *= 2
ch++;
}
如果要为post迭代表达式使用for循环但已经初始化了变量,可以使用null语句作为第一个表达式:
for( ; ch > 0; ch++ ){ /* ... */ }