在C的for标头的第一部分中使用条件代替赋值

麦可

为什么在C中允许这样做???它是做什么的?即使没有必要,也可以在此处看到完整的程序http://www.learntosolveit.com/cprogramming/Ex_1.18_remtrailbt.html

for (i > 0; ((s[i] == ' ') || (s[i] == '\t')); --i)
dbush

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

删除路径的第一部分?

给每行的第一部分上色

删除网址的第一部分

列名第一部分的子集

隐藏第一部分

第一部分的 Youtube 背景

从C#中的字符串获取域的第一部分?

如何使用Objective C获取子单元的IndexPath第一部分表视图?

脚本仅使用双引号的第一部分

使用HTTP读取文件的第一部分

如何使用re.match查找URL的第一部分?

使用url的第一部分的角度设置服务状态

分割字符串并使用IF获取第一部分

使用gsub仅保留字符串的第一部分

使用重命名命令重命名文件的第一部分

如何在单词中使用自定义符号的第一部分和第二部分

通过CSS attr()获取属性的第一部分/最后一部分

在 Postman 测试中使用哪个片段来验证标头值的一部分

Python:如何使2个相等的零件列表仅在for循环中使用每个零件的第一部分?

宏以复制第一部分,并使用下一组作为销售额的列

如何使用熊猫删除列值中的URL字符串的第一部分?

仅使用多位数整数的第一部分查找 2 列之间的匹配项

使用jQuery将类添加到特定div之后的第一部分

如何使用python正则表达式提取上下文的第一部分

AppleScript会根据其第一部分使用Google Chrome打开日历中的URL

如何在不提交的情况下使用jQuery Validator验证表单的第一部分?

将字符串分为两部分:第一部分是标题,第二部分是使用php的章节

输出的第一部分(印刷星)不好

Sed:选择价格的第一部分