为什么在C中允许这样做???它是做什么的?即使没有必要,也可以在此处看到完整的程序http://www.learntosolveit.com/cprogramming/Ex_1.18_remtrailbt.html
for (i > 0; ((s[i] == ' ') || (s[i] == '\t')); --i)
for
语句的第一个子句要么是声明,要么是(在这种情况下)无效上下文中的表达式。这意味着对第一子句的副作用进行评估,通常是一种表达类型的赋值。
C标准的6.8.5.3节将for
声明定义如下:
1声明
for(第1条; expression-2 ; expression-3)语句
其行为如下:表达式expression-2是在每次执行循环主体之前求值的控制表达式。每次执行循环主体后,表达式expression-3都将被评估为无效表达式。如果子句1是声明,则它声明的所有标识符的范围是声明的其余部分和整个循环,包括其他两个表达式;在第一次对控制表达式求值之前按执行顺序达到它。如果子句1是一个表达式,则在对控制表达式进行第一次评估之前,将其评估为空表达式。
2子句1和表达式3都可以省略。省略的expression-2替换为非零常量。
因此,for
语句的第一子句中允许使用任何表达式。在这种特殊情况下,表达式i > 0
被评估但没有副作用,因此它实际上什么也没做。它与:
for (; ((s[i] == ' ') || (s[i] == '\t')); --i)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句