這條線會打印什麼?這條線打印什麼,爲什麼?
printf("hello\n") | (printf("goodbye\n") || printf("world\n"));
測試後,印:
hello
goodbye
但我仍然不知道爲什麼,仍然堅持它,任何提示將非常感激!順便說一下,我知道printf()返回字符輸出的數量,但仍然沒有得到邏輯背後的邏輯。既然你已經使用了他們之間|
這條線會打印什麼?這條線打印什麼,爲什麼?
printf("hello\n") | (printf("goodbye\n") || printf("world\n"));
測試後,印:
hello
goodbye
但我仍然不知道爲什麼,仍然堅持它,任何提示將非常感激!順便說一下,我知道printf()返回字符輸出的數量,但仍然沒有得到邏輯背後的邏輯。既然你已經使用了他們之間|
| - Bitwise OR operator
|| - Logical OR operator
printf("hello\n") | (printf("goodbye\n") || printf("world\n"));
在這種情況下,無論是printf("hello\n")
和printf("goodbye\n")
將被執行。由於它是按位操作,兩者都將被執行。 printf
也返回打印的字符數。因此在你的情況下,printf("hello\n") | printf("goodbye\n")
將導致6 | 8
= 0110 | 1000 = 1110 = 14(十進制)。
因此,該表達式變得相當於14 || printf("world\n")
。由於14(即非零)本身滿足邏輯或檢查,就不會繼續printf("world\n")
這將是6
謝謝@Kay的編輯。我需要做一些研究如何做到這一點:-) – 2014-10-21 03:14:03
(printf("goodbye\n") || printf("world\n"))
兩個「再見」和「世界」是真實的陳述。因此,它正在採取「再見」作爲第一個按順序執行。
試試這個更多的澄清
printf(printf("hello\n") | (printf(NULL) || printf("world\n")));
Output:
hello
world
因爲 「NULL」 是FALSE和 「世界」 是真。 (0 || 1 = 1)
謝謝,
提示:也許搞清楚'|'和'||'做什麼? – juanchopanza 2014-10-20 09:19:07
您的問題標題似乎與您的問題相沖突。你*知道*它是什麼... – 2014-10-20 09:20:07
我知道|是比特OR還是||是OR運算符,但仍然不知道爲什麼它打印再見,但不是世界:( – 2014-10-20 09:24:09