簡體   English   中英

在循環體中使用逗號運算符

[英]using comma operator in the body of a loop

我試圖以兩種不同的方式編寫一個while循環,並注意到在條件中使用','兩次並不像我認為的那樣工作。 我只是對實際發生的事情感到好奇。 這是代碼:

#include <stdio.h>

int main()
{
    int i = 0, lim = 1000, c;
    char s[lim];
    while (i < lim - 1, (c = getchar()) != '\n')
    {
        if (c != EOF)
        {
            s[i] = c;
        }
        else
        {   
            break;
        }
        ++i;
    }
    printf("%s\n", s);
    return 0;
}
#include <stdio.h>

int main()
{
    int i = 0, lim = 1000, c;
    char s[lim];
    while (i < lim - 1, (c = getchar()) != '\n', c != EOF)
    {
        s[i] = c;
        ++i;
    }
    printf("%s\n", s);
    return 0;
}

讓我們看看while條件:

i < lim - 1, (c = getchar()) != '\n', c != EOF

第一部分i < lim -1沒有任何效果。 第二部分將執行c = getchar() ,但與'\n'的比較完全丟棄。 整個條件的返回值為c != EOF 所以條件等價於:

(c = getchar()) != EOF

您可以做的是更改&&的逗號運算符。

i < lim - 1 && (c = getchar()) != '\n' && c != EOF

逗號不進行復雜的邏輯運算。 您需要改用邏輯運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM