簡體   English   中英

While 循環的參數內的逗號

[英]Comma inside arguments of While Loop

為計算機科學期末考試而學習。

我真的想不通這個問題。

這個 C 程序的輸出是什么?

#include<stdio.h>
int main()
{
    int i = 0;
    while(i < 4, 5)
    {
        printf("Loop ");
        i++;
    }
    return 0;
}

A.無限循環

B. Loop Loop Loop Loop Loop

C. Loop Loop Loop Loop

D.什么都不打印

執行時,它會無限次打印循環。 為什么會這樣? 為什么While循環的參數里面有一個逗號? 它有什么作用?

你在 while 循環的條件中擁有的是逗號 operator ,它評估其操作數並產生其最右邊操作數的值。

在您的情況下,它評估i < 4條件並丟棄它,然后將條件評估為 5。所以它本質上等同於:

while(5)
{
    printf("Loop ");
    i++;
}

這顯然會導致無限循環,因為條件始終為真。 (請記住,任何非零值在 C 中始終為“真”)。 由於i在無限循環中遞增,也可能出現整數溢出

它將永遠循環,因為 while 循環的條件i < 4, 5求值為5 ,它不同於 0,因此在C被認為是true

要了解更多信息,請閱讀comma operatorhttps : //en.wikipedia.org/wiki/Comma_o​​perator

簡而言之,當使用逗號運算符時,它的所有操作數都會被計算,但整個表達式采用最后一個的值。 例如:

int val = (1, 2, 3);
printf("%d\n", val);

將打印3

暫無
暫無

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

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