[英]Why doesn't this code output anything?
考慮這個“考試”問題:
int main()
{
int a=10,b=20;
char x=1,y=0;
if(a,b,x,y)
{
printf("EXAM");
}
}
請讓我知道為什么這根本不打印任何東西。
逗號運算符 - 計算第一個表達式並返回第二個表達式。 所以a,b,x,y
將返回存儲在y中的值,即0。
a,b,x,y
是y
(因為逗號運算符計算其右操作數的結果),y為0,這是假的。
逗號運算符返回最后一個語句,即y
。 由於y
為零,因此if語句的計算結果為false,因此從不執行printf
。
因為表達式a,b,x,y
計算結果為y
,而y
又計算為0
,所以從不執行相應的塊。 逗號運算符執行每個語句並返回最后一個語句的值。 如果您想要邏輯連接,請使用&&
運算符:
if (a && b && x && y) { ... }
其他人已經提到過逗號運算符返回最右邊的值。 如果要在任何這些變量為真時打印值,請使用邏輯或:
int main()
{
int a=10,b=20;
char x=1,y=0;
if(a || b || x || y)
{
printf("EXAM");
}
}
但是請注意以下事實:逗號評估所有表達式,而or運算符只要值為true就會停止。 所以
int a = 1;
int b;
if(a || b = 1) { ... }
b有一個未定義的值,而有
int a = 1;
int b;
if(a, b = 1) { ... }
b將設置為1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.