看板 C_and_CPP 關於我們 聯絡資訊
版上鄉民大家好XD 小弟有個關於結合性的問題不大懂 想請問大家^^ 以下是程式碼 int main(){ int i=-3 ,j=2 ,k=0,m; m = ++i && ++j || ++k; printf("%d, %d, %d, %d\n", i, j, k, m); system("pause"); return 0; } Output是: -2, 3, 0, 1 看不懂 k 和 m 的output為什麼是0和1 >< 煩請知道的鄉民解答~ 感恩~ 謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.195.83
ericinttu:月經文 偷噓一下 02/24 14:15
shadow0326:估狗short circuit 02/24 14:16
cuteclare:++k 不曾執行過 , bool 的true 對 int 而言是 1 02/24 14:37
xatier:八戒! 02/24 15:10
cuteclare:回樓上應該不算吧~? 02/24 15:20
angleevil:xatier那個不是 02/24 15:30
大家好^^ 抱歉小弟程式能力很弱+爬文不周>< 因為不是這個版的常客 所以不知道這問題是月經文 真的很抱歉~ 得罪的地方請多見諒^^ 想請問為什麼++k不曾執行過呢?
mythnc:當A || B,A為T時,B不會執行。 02/24 16:20
感謝回答^^ 這樣的話m = ++i && ++j執行後m為什麼會變成1呢 我是想: 0 <- 0 && 1 有錯煩請指證^^
angleevil:常常有人發問的文=月經文 02/24 17:02
哈哈~ a大這個我知道XD
angleevil:1 && 1 斷掉 02/24 17:41
diabloevagto:守則8,還有short什麼的忘了 02/24 19:18
iamstudent:這邊並沒有觸犯守則8,因為該行中ijkm都只被給值一次 02/24 20:27
iamstudent:c和c++可以允許把不是bool的變數當作真假值 02/24 20:28
diabloevagto:沒錯,不是8戒xdd是short circuit 02/24 20:29
iamstudent:只要該變數不為0就會當作true,所以++i會被解釋為true 02/24 20:29
iamstudent:原po可能以為負數會被當作false吧,實際上與正負無關 02/24 20:33
對吼!!!!!!!!!!!!!! 我徹底忘記不是0就是True了XD 感謝大家的提醒和回答!! 祝大家平安順利^^ ※ 編輯: cisco 來自: 1.162.195.83 (02/24 22:16)
xatier:推太快 看錯 orz 02/25 16:32