[問題] if 條件判斷, 運算元擺左擺右的差別?

看板C_and_CPP (C/C++)作者 (焚離)時間12年前 (2013/10/07 20:21), 編輯推噓7(7026)
留言33則, 13人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) NetBeans 7.1.2 問題(Question): 我在看一些code的時候看到一些寫法: if ( false == Function() ) { ... } 這樣的寫法跟 if ( Function() == false ) { ... } 或是 if ( ! Function() ) 有差別嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.107.120

10/07 20:23, , 1F
沒有
10/07 20:23, 1F

10/07 20:24, , 2F
但是大小寫有差 XD
10/07 20:24, 2F

10/07 20:26, , 3F
正常沒亂搞的code一樣
10/07 20:26, 3F

10/07 20:26, , 4F
可是如果operator亂overload三個會有不同的結果
10/07 20:26, 4F

10/07 20:39, , 5F
http://ideone.com/KDzuzn 三個呼叫的函數不同
10/07 20:39, 5F

10/07 20:39, , 6F
再加cast operator還可以更混亂
10/07 20:39, 6F
原來是這樣,就我看的那份code來說,根本沒有差別 謝謝mazureblaze大大清楚的解說 m(_ _)m ※ 編輯: mabinogi805 來自: 220.137.107.120 (10/07 20:41)

10/07 20:50, , 7F
如果 Function() 回傳的是 reference
10/07 20:50, 7F

10/07 20:51, , 8F
那前者不小心把==打成=時會compilation error,後者不會
10/07 20:51, 8F

10/07 20:52, , 9F
//www.yinwang.org/blog-cn/2013/04/14/yoda-notation/
10/07 20:52, 9F

10/07 20:56, , 10F
把==寫錯成=時第二種寫法會有error,第一種只有warning
10/07 20:56, 10F

10/07 21:01, , 11F
另一方面第一種有些人(像我)會覺得全身不蘇湖XD
10/07 21:01, 11F

10/07 21:29, , 12F
以前看C#專案裡面的code,寫成("0").Equals(expression)
10/07 21:29, 12F

10/07 21:29, , 13F
已經有專用的compare method還倒著寫,畫蛇添足
10/07 21:29, 13F

10/07 21:37, , 14F
好像說那樣可以省去檢查expression是不是null
10/07 21:37, 14F

10/07 21:37, , 15F
正常寫法會丟null object exception
10/07 21:37, 15F

10/07 21:38, , 16F
雖然很多人說倒著寫好處多多, 但我還是不喜歡倒著寫
10/07 21:38, 16F

10/07 21:40, , 17F
如果回傳是bool 我都寫if (not function())
10/07 21:40, 17F

10/07 23:12, , 18F
有開 warning 而且有把 warning 清掉的習慣,寫法就沒差了
10/07 23:12, 18F

10/07 23:19, , 19F
我也討厭倒著寫(跟我的寫法不一樣就叫倒著寫)
10/07 23:19, 19F

10/07 23:20, , 20F
最好是統一 不然出事 天殺的你根本不知道問題點在哪
10/07 23:20, 20F

10/08 00:33, , 21F
我也覺得用 warning 清就好了
10/08 00:33, 21F

10/08 00:54, , 22F
開warning option很簡單,強迫大家清warning很困難
10/08 00:54, 22F

10/08 01:03, , 23F
不要傷害別人的腦袋
10/08 01:03, 23F

10/08 02:39, , 24F
倒著寫在Expert C Programming裡頭有提到XD
10/08 02:39, 24F

10/08 07:50, , 25F
所以我當 leader 的時候都是開 -Werror LOL
10/08 07:50, 25F

10/08 08:57, , 26F
樓上夠狠 XD
10/08 08:57, 26F

10/08 10:28, , 27F
猛= = 不過通常是開新專案吧~ 修舊專案的警告都要修
10/08 10:28, 27F

10/08 10:29, , 28F
一兩個禮拜 才修的完~
10/08 10:29, 28F

10/08 12:25, , 29F
不管開不開-Werror,舊專案的warning還是得修吧... 囧
10/08 12:25, 29F

10/08 13:21, , 30F
有時候亂修也是會出問題的,亂轉型轉出問題...
10/08 13:21, 30F

10/08 16:07, , 31F
防呆只能防一般呆, 防不了他○的呆...
10/08 16:07, 31F

10/09 00:57, , 32F
有時接前人的project 幾千個 警告看到就累了= =
10/09 00:57, 32F

10/19 04:32, , 33F
warning本來就該修,吃過虧才會知道warning危險之處
10/19 04:32, 33F
文章代碼(AID): #1IKgTLYq (C_and_CPP)
文章代碼(AID): #1IKgTLYq (C_and_CPP)