我還在學習C和試圖瞭解一些我所看到的在後續的:C畫幅的字符串問題
printf("%s ", row[i] ? row[i] : "NULL");
很顯然,我所知道的printf
,%s
等什麼我不完全沒有把握是我應該去了解? :
以及我的其他選擇。我對術語不熟悉,所以我甚至不確定這是「格式字符串」的一部分。我認爲這是返回row[i]
並繼續返回row[i]
,直到它遇到NULL
?
澄清和一個指針在正確的方向學習和理解這一點更好將非常感激。
我還在學習C和試圖瞭解一些我所看到的在後續的:C畫幅的字符串問題
printf("%s ", row[i] ? row[i] : "NULL");
很顯然,我所知道的printf
,%s
等什麼我不完全沒有把握是我應該去了解? :
以及我的其他選擇。我對術語不熟悉,所以我甚至不確定這是「格式字符串」的一部分。我認爲這是返回row[i]
並繼續返回row[i]
,直到它遇到NULL
?
澄清和一個指針在正確的方向學習和理解這一點更好將非常感激。
這被稱爲三元操作符。如果語句是<condition> ? <res1> : <res2>
,那麼如果condition
評估爲true,則語句評估爲res1
,否則評估爲res2
。
三元,而不是trenay。它更精確地稱爲「條件運算符」。它只被稱爲「三元操作符」,因爲它恰好是語言中唯一需要三個操作數的操作符。 – 2014-08-29 20:18:54
它與字符串格式無關。這是一種稱爲三元操作的語法糖。它看起來像這樣:<condition> ? <if_true> : <if_false>
。 擴大,它相當於這樣的:
if (row[i])
{
result = row[i];
}
else
{
result = "NULL";
}
printf("%s ", result);
的?
運營商是一種叫做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
謝謝 - 我有一種感覺,就是它在做什麼,但我對條件操作符不熟悉,完全不知道它們可以以這種方式使用。似乎它顯着降低了代碼...我必須對操作員進行更多的閱讀。謝謝。 – 2014-08-29 20:15:41
:是三元運算符http://en.wikipedia.org/wiki/%3F :#C – user1336087 2014-08-29 20:10:50