發問區 會員登入
新使用者?立即註冊
.
服務首頁|服務說明|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 發表在 痞客邦 留言(0) 人氣(3)