發問區
會員登入 新使用者?立即註冊 . 服務首頁|服務說明|Yahoo!奇摩. 知識+ 首頁 知識分類 電腦網路 科學常識 醫療保健 煩惱心事 生活資訊 手機通訊 休閒嗜好 視聽娛樂 運動體育 社會人文 商業金融 教育學習 .如何做 煩惱 主題知識 .我要發問 發表 我要發問 ..熱門: 蛇年運勢 年菜食譜 壓歲錢由來 過年吃什麼 犯太歲 主題 金蛇報喜,大過好年 用手機上知識+ .知識搜尋 ....知識+ 首頁> 電腦網路> 程式設計> C&C++ 加入追蹤 轉寄朋友 友善列印 .知識問題| C語言的條件判斷. 發問者: ??? ( 初學者 2 級) 發問時間: 2009-12-11 09:40:30 解決時間: 2009-12-14 00:12:28 解答贈點: 15 ( 共有 0 人贊助 ) 回答: 2 評論: 0 意見: 4 [ 檢舉 ] 網友正面評價 0% .共有 0 人評價.int A; int i; for(i=5;i-- && (A=i+10);); printf("%d",A); 想問的是: i只要為0,是否後面的判斷就不會執行 還是這其實跟編譯器有關? 我測試的結果是A=10 2009-12-11 14:45:56 補充 那是不是加個括號 for(i=5;(i--) && (A=i+10);); 就沒爭議了? 其實我一開始只是想問short circuit那部份 -- 跟 && 的優先我沒考慮到 2009-12-11 15:08:36 補充 不過還是覺得先&&再--滿怪的 去查這兩者的優先順序應該都是--在前面 最佳解答發問者自選 .. 回答者: prisoner26535 ( 研究生 2 級 ) 擅長領域: 英文 | C&C++ 回答時間: 2009-12-11 12:52:33 [ 檢舉 ] .Ritchie 是有規定 logical evaluation 的short circuit. 所以, 當 i == 0 時, (A=i+10) 是不會被 evaluated ㄉ! 不過, 你ㄉ問題 是: 當 i == 1 時, (A=i+10) 是否 會在於 i-- 之前? 或是之後被 evaluated ㄉ? Ritchie 就沒有規定. 下次遇到時, 再來問一次ㄅ! 2009-12-11 13:41:08 補充 還是這其實跟編譯器有關?是有關! 有ㄉ編譯器evaluate "--" operator before && 有ㄉ編譯器evaluate "--" operator after && 2009-12-12 01:41:54 補充 是喔! Ritchie 是有規定 binary operators' eval sequence. 不過對於 unary operators, 尤其是有side effectsㄉ就沒有規定. Ritchie 是很討厭side effects. 我想是故意讓人避免ㄅ! 問ㄌ他幾次他不 承認 也不 否認! 2009-12-12 17:13:01 補充 不過還是覺得先&&再--滿怪的 去查這兩者的優先順序應該都是--在前面? 優先順序是捨? Associativity of operators? 還是 order of evaluation? 雖然Ritchie用ㄌ後者好幾次,但是他書上ㄉ意思多是前者. 在parser, 前者是很重要ㄉ! 例; expression: a*b + c*d + e*f 他書上優先順序是 * 高於 +, 但是這ㄍ是不世代表 第三ㄍ* (in e*f) 一定在 第一ㄍ+ 之前被evaluated? 2009-12-12 17:24:43 補充 所以 我想你ㄉ困擾 是英為 你把 Associativity of operators 和 order of evaluation 混一起ㄌ Luckily, they could be the same most of the time when it matters to you. 相關詞: c語言程式,c語言教學,c語言指令查詢,c語言題目,c語言次方,c語言陣列,c語言範例,c語言亂數,c語言下載,c語言質數 C語言,short circuit,判斷,int,編譯器,printf,evaluated,logical,問題,執行[ 快速連結 ] 其它回答( 1 ) | 意見( 4 ) | 評論( 0 ) .發問者評價 大概知道了,感謝解答。 .發表你的評價 你的評價 發表評價: 正面 普通 負面 評價內容: 發表 取消 . 加入追蹤 轉寄朋友 友善列印 .馬上按讚 加入 Yahoo! 奇摩 知識+ 粉絲團 •免費索取商英光碟+小書 •多益700分線上測驗題庫 •立即免費測試你的多益等級 •英文email超實用金句! •測你在旁人眼中的英文力? •多益700分線上測驗題庫 相關問答 [ C&C++ ]初學C語言 網站 . [ 電腦 ]c++程式語言入門 . [ C&C++ ]string 搜尋 [C語言] . [ C&C++ ]C語言基礎問題 . [ C&C++ ]C語言 想學C語言 (20點) . [ C&C++ ]我想學C語言......有誰能幫幫忙嗎? . 更多 .其他回答(1) 意見(4) 相關評論(0) . 001 回答者: 阿牛 ( 初學者 2 級 ) 回答時間: 2009-12-11 13:15:56 [ 檢舉 ] .. 基本上跟編譯器沒有關係~跟你是前置後置有關 也就是你填 --i 或者 i--有關係~ 因為 && 是由左而右結合~ 而後置是下一個敘述後改變其值~所以當你i = 0 時 後面的 (A= i + 10) 根本不會被執行到~即使執行到也無所謂~ 因為 0 && ? 都是false 你的迴圈依然不會被執行到~但是你如果改成 --i && (A=i+10) 結果就會不一樣囉~ 因為 0 -1 == -1 == true 所以 A = -1 + 10 = 14 (true) 故回圈內會被執行~ 但是上述前置在DevC++ 4.9.9.2 依然無法執行我的Devc++的gcc版本為 3.4.2(mingw-special)~我想這是一個bug~因為如果依照標準的C/C++ 應該是要被執行的~ 另外我用VS 2005 / gcc 4.1.2 20070925 /TC 3.0 都可以正常的執行前置版本~ 你可以嘗試改成前置看看執行結果~:) 參考資料: Me 1 001 意見者: Jacob Lee ( 大師 3 級 ) 擅長領域: C&C++ | 作業系統 發表時間: 2009-12-11 13:31:09 [ 檢舉 ] ..這種寫法,  若是程式師自己寫的,   不是學藝不精,   就是自找死路!  若是老師考學生,該算是無聊透頂!  (教是一定要教!不然學生之後就死了!   但,拿來考的話...  ) 002 意見者: ??? ( 初學者 2 級 ) 發表時間: 2009-12-11 14:18:30 [ 檢舉 ] ..設定A的值只是要print出來 我想知道的是 (condition1 && condition2) 當codition1為false時contition2的內容是否會被執行 有時候codition1是邊界檢查,而codition2是看那陣列的值作判斷 如果不會被執行的話我就不用擔心存取到超出陣列的值了 003 意見者: ??? ( 初學者 2 級 ) 發表時間: 2009-12-11 14:32:25 [ 檢舉 ] ..例如判斷是否重複: 原始寫法: for(i=5;i--;) if(A[i]==n) break; printf("%s", i==-1?"not repeat\n":"repeat\n"); 想改成這樣: for(i=5;i-- && A[i]!=n;); printf("%s", i==-1?"not repeat\n":"repeat\n"); 但不知道會不會有問題 004 意見者: prisoner26535 ( 研究生 2 級 ) 擅長領域: 英文 | C&C++ 發表時間: 2009-12-12 01:24:39 [ 檢舉 ] ..我想知道的是 (condition1 && condition2) 當codition1為false時contition2的內容是否會被執行? 不會! 1 發表意見發表意見字數已達上限,要改成發表評論嗎?. 發表 取消 . 目前沒有資料 我要評論 註冊 會員登入 .公告: 知識團員轉粉絲全數完成 . HOT! 拍賣 | 奇美19吋 Vista電腦 雙核心 . .刊登贊助網站•全民免費學電腦 8大熱門職訓課 www.pccenter.com.tw 優惠僅到月底!學承職訓電腦課程免費學,快速提升職場競爭力,立即搶先申請! www.pccenter.com.tw •IT資訊人才聯合徵才培訓申請中 www.pcschool.com.tw 響應政府資訊人才培訓計畫,APP職缺大增,求職必備電腦證照,快線上申請培訓。 www.pcschool.com.tw •免費線上電腦課程 再送職涯分析 www.lccnet.com.tw 搶先索取免費5000堂線上電腦課程,聯成再提供熱門廠商媒合,一次找到好工作! www.lccnet.com.tw •巨匠電腦八大主題課程免費學到飽 www.pcschool.com.tw 簡單三步驟,巨匠八大主題電腦課程讓你選,再送好禮6選1。免費線上課程學到飽。 www.pcschool.com.tw •GOMAJI軟體進修團購超值價 www.gomaji.com 學技能也要省!揪團學時下超夯電腦課程,GOMAJI要你省上加省! www.gomaji.com •馬上升級 Windows 8 www.microsoft.com 全新動態磚、超快超流暢、豐富Windows APP市集,立即了解更多! www.microsoft.com.最新C&C++ 發問中 已解決 .我想學程式語言,要如何開始? 演算法問題請教(Complexity theory) 更多 相依電流源與單位步階函數計算 更多 精選關鍵字 ..do-while for 函數 8051 字串 矩陣 程式 C++ 指令 C 程式設計 運算 API 線性 陣列 數值 code 會員管理 read 進位 題目 讀取 會員登入 語法 迴圈 連結 堆疊 撰寫 .知識搜尋 ...雅虎資訊 版權所有 (c) 2013 Yahoo! Taiwan. All Rights Reserved. 「本服務設有管理員」 服務條款隱私權政策..知識+ 之問答內容是由參與Yahoo!奇摩知識+ 之網友提供,僅供參考,Yahoo!奇摩不保證其正確性。 ... .

文章標籤
全站熱搜
創作者介紹
創作者 phibrain372 的頭像
phibrain372

重裝武士電腦版

phibrain372 發表在 痞客邦 留言(0) 人氣(3)