2014-08-29 41 views
0

我還在學習C和試圖瞭解一些我所看到的在後續的:C畫幅的字符串問題

printf("%s ", row[i] ? row[i] : "NULL"); 

很顯然,我所知道的printf%s等什麼我不完全沒有把握是我應該去了解? :以及我的其他選擇。我對術語不熟悉,所以我甚至不確定這是「格式字符串」的一部分。我認爲這是返回row[i]並繼續返回row[i],直到它遇到NULL

澄清和一個指針在正確的方向學習和理解這一點更好將非常感激。

+3

:是三元運算符http://en.wikipedia.org/wiki/%3F :#C – user1336087 2014-08-29 20:10:50

回答

2

這被稱爲三元操作符。如果語句是<condition> ? <res1> : <res2>,那麼如果condition評估爲true,則語句評估爲res1,否則評估爲res2

+2

三元,而不是trenay。它更精確地稱爲「條件運算符」。它只被稱爲「三元操作符」,因爲它恰好是語言中唯一需要三個操作數的操作符。 – 2014-08-29 20:18:54

3

它與字符串格式無關。這是一種稱爲三元操作的語法糖。它看起來像這樣:<condition> ? <if_true> : <if_false>。 擴大,它相當於這樣的:

if (row[i]) 
{ 
    result = row[i]; 
} 
else 
{ 
    result = "NULL"; 
} 

printf("%s ", result); 
1

?運營商是一種叫做conditional operator(或三元運算符)。它可以被認爲是「內聯條件陳述」。您共享的代碼相當於:

if(row[i] != NULL) { 
    printf("%s ", row[i]); 
} else { 
    printf("%s ", "NULL"); 
} 

有條件的運算符可以用作函數或賦值的參數。他們遵循的語法如下:

[conditional boolean evaluation] ? [value if true] : [value if false] 

所以,你可以嵌入像下面的例子:

int y = x < 5 ? 1 : 0; // if x is less than 5, y will be 1, otherwise it will be zero 
+0

謝謝 - 我有一種感覺,就是它在做什麼,但我對條件操作符不熟悉,完全不知道它們可以以這種方式使用。似乎它顯着降低了代碼...我必須對操作員進行更多的閱讀。謝謝。 – 2014-08-29 20:15:41