【问题标题】:What's the meaning of " for ( ; ; ) " in C? [duplicate]C中的“ for ( ; ; ) ”是什么意思? [复制]
【发布时间】:2019-01-24 17:07:46
【问题描述】:

我将 C 用于我的操作系统主题,我已经看到 for( ;; ) 的用法,但我不知道其含义。我猜这是一个无限循环。

int sfd, tfd;
char c;
for (;;) {
    if ( read (sdf , &c , 1) != 1 ) return;
    write( tfd, &c, 1 );
}

【问题讨论】:

    标签: c system


    【解决方案1】:

    for 语句(参见 c99 6.8.5.3)有 3 个(可选)部分:初始化条件增量

    “条件”部分的缺失被解释为true(参见c99 6.8.5.3p2

    ...省略的表达式 2 被一个非零常量替换。

    【讨论】:

    • 我认为您可以在 2011 年的“原始”问题中发布您的(好的)答案,而不是回复明显的重复问题。
    • @Jean-FrançoisFabre:但是 pmg 将不得不概括 C++ 的答案,其中 for 循环是一个不同的野兽,他们的回答者需要挖掘出相应的 C++ 标准参考。
    【解决方案2】:

    这确实是一个无限循环,需要breakreturn(或跳转)才能退出。

    它优于等效的 while(1),因为它通常会发出编译器警告,而 for(;;) 几乎肯定不会。

    【讨论】:

    • 第二句你确定吗?我认为这是纯粹的风格问题。
    • @EugeneSh。的确是我;因为for 中的每个表达式都是可选的,编译器不会费心剔除奇怪的情况,所以for(;;) 将自己确立为成语。
    • 一些编译器抱怨while(1) for(;;) 沉默他们的警告(Windriver/Diabdata)所以有区别。
    • @Jean-FrançoisFabre:当然!
    • 你是正确的 C++ 部分,它是不同的,正如我的回答下方的评论所述:stackoverflow.com/a/52238756/6451573
    猜你喜欢
    • 2013-09-26
    • 2019-09-12
    • 2012-05-18
    • 2014-02-18
    • 2018-06-24
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多