C语言中完整的“ for”循环语法是什么?

for在阅读其他人的代码时,我看到了一些非常奇怪的循环。我一直在尝试为for循环查找完整的语法说明,C但是这非常困难,因为单词“ for”出现在无关的句子中,这使得Google几乎无法进行有效的搜索。


阅读此主题后,我想到了这个问题,这让我再次感到好奇。


在for这里:


for(p=0;p+=(a&1)*b,a!=1;a>>=1,b<<=1);

在中间条件下,有一个逗号分隔两段代码,这个逗号是做什么的?我理解右边的逗号,因为它使得a>>=1和b<<=1。


但是在循环退出条件下,会发生什么?它会在何时p==0,何时a==1或何时同时发生时退出吗?


如果有人能帮助我理解这一点,或者使我指向完整for循环语法描述的方向,那将是非常不错的。


c 语法 


小怪兽爱吃肉
浏览 510回答 3
3回答

杨魅力

逗号仅分隔两个表达式,并且在C中允许使用正则表达式的任何位置都有效。这些从左到右依次执行。最右边的表达式的值是整个表达式的值。for循环由三部分组成,其中任何一个也可能为空;在每次迭代的开始处执行一个(第一个),在每次迭代结束时执行一个(第三个)。这些部分通常分别初始化和递增计数器。但他们可能会做任何事情。第二部分是一个试验是在每次执行的最初开始执行。如果测试合格false,则循环中止。这里的所有都是它的。

皈依舞

循环的C样式包含三个表达式:for (initializer; condition; counter) statement_or_statement_block;循环开始时,初始化程序运行一次。在每次迭代之前检查条件。只要计算结果为true,循环就会运行。计数器在每次迭代后运行一次。这些部分中的每一个都可以是使用您编写循环所用语言有效的表达式。这意味着它们可以更有创造性地使用。您想要做的任何事都可以进入初始化器,介于两者之间的任何事都可以进入条件或计数器,直到循环不再有主体为止。为此,逗号运算符非常方便。它允许您将表达式链接在一起以形成单个新表达式。大多数情况下,在for循环中使用它时,逗号运算符的其他含义(例如,值分配注意事项)起着较小的作用。即使你可以通过使用语法创造性地做聪明的事情-直到我找到我会避开它真的很好的理由这样做。使用for循环玩代码高尔夫会使代码难以阅读和理解(和维护)。
打开App,查看更多内容
随时随地看视频慕课网APP