[問題] 關於?:條件執行的問題

看板C_and_CPP作者時間12年前 (2012/11/05 17:58), 編輯推噓2(2010)
留言12則, 9人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c 最近程式書剛好讀到 ?: 判斷式的用法 自己試試看後發現結果不符,想不出為捨麼>< 自己的程式碼: #include <stdio.h> #include <stdlib.h> int main(void) { int i=4; (i>3) ? printf("i>3"), printf("a") : printf("i<=3"), printf("b") ; system("pause"); return (0); } 顯示出: i>3ab 多跑出一個b run了一下範例光碟的程式碼沒有這個問題 感謝解惑>_< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.254.252 ※ 編輯: qazqaz 來自: 125.228.254.252 (11/06 02:00)

11/06 02:15, , 1F
因為?:的優先權比,高啊...
11/06 02:15, 1F

11/06 02:15, , 2F
printf 傳回值 : 輸出之字元數.所以...
11/06 02:15, 2F

11/06 02:17, , 3F
請忽視我上一堆文,看來似乎無關
11/06 02:17, 3F

11/06 02:25, , 4F
在兩個printf頭尾加上()就正常了,範圍的問題吧
11/06 02:25, 4F

11/06 02:26, , 5F
( printf("i<=3"), printf("b") )
11/06 02:26, 5F

11/06 03:01, , 6F
範例程式碼不一樣?
11/06 03:01, 6F

11/06 10:37, , 7F
?:是用來讓程式看起來更簡單不是更複雜的,不要亂用
11/06 10:37, 7F

11/06 10:37, , 8F
該用if的時候就用if
11/06 10:37, 8F

11/06 12:04, , 9F
, 會戕害心靈。濫用 , 應該視為犯罪。
11/06 12:04, 9F

11/06 13:17, , 10F
這是未定義行為...吧...? 反正不要用就好了 = =a
11/06 13:17, 10F

11/06 14:53, , 11F
printf之間可以用,??
11/06 14:53, 11F

11/09 00:49, , 12F
何必這樣搞呢 簡短的macro再用?:
11/09 00:49, 12F
文章代碼(AID): #1Gb_ufBN (C_and_CPP)
文章代碼(AID): #1Gb_ufBN (C_and_CPP)