[英]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 operator
: https : //en.wikipedia.org/wiki/Comma_operator
簡而言之,當使用逗號運算符時,它的所有操作數都會被計算,但整個表達式采用最后一個的值。 例如:
int val = (1, 2, 3);
printf("%d\n", val);
將打印3
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.