答案是90.但是,這是什麼邏輯? 萬一我寫這個j =(4,5); 然後答案是5.有人可以解釋這段代碼的輸出嗎?
#include<stdio.h>
void main()
{
int j;
j=(4,5,90);
printf("%d\n",j);
}
答案是90.但是,這是什麼邏輯? 萬一我寫這個j =(4,5); 然後答案是5.有人可以解釋這段代碼的輸出嗎?
#include<stdio.h>
void main()
{
int j;
j=(4,5,90);
printf("%d\n",j);
}
您正在使用comma operator:
在C和C++編程語言中,逗號(令牌表示)是一個二進制運算符,用於評估其第一個操作數並放棄結果,然後評估第二個操作數並返回此值(和類型)。
請注意,這不同於分隔函數參數的逗號。
a = 1, 2, 3;
^^
| |
comma operators
a = foo(1, 2, 3);
^^
| |
separators
爲您的代碼,這意味着所有的情況是,表達式4
,5
和90
被評估一個接一個,並在此結果是最後一個表達式的結果,即90
。
圓括號只是括號,它們不會以任何方式影響結果。
const int j = (4, 5, 90);
是一樣的:
const int j = 4, 5, 90;
或者,對於這個問題:
const int j = (4), (5), (90);
由於維基百科的頁面我聯繫上指出,應該是從上面明顯,逗號運算符很少有用。它可以被欺騙用於各種模糊目的的服務(參見this page for examples),但做晦澀的事情很少是贏。
逗號用作分隔符而不是運算符。因爲它的優先級低於賦值。 – 2013-02-13 10:07:10
我無法清楚地明白你給了什麼解釋「放鬆」。你能否以更簡單的方式解釋它? – 2013-02-13 10:16:02
@Juna我增加了更多的話,希望現在更清楚。 – unwind 2013-02-13 10:40:51
你認爲它是什麼?你爲什麼寫這個代碼?你想達到什麼目的? – Lundin 2013-02-13 10:52:38
請閱讀以下內容:[逗號運算符](http://en.wikipedia.org/wiki/Comma_operator) – Alex 2013-02-13 10:05:20