亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 請(qǐng)教一個(gè)語法題 [打印本頁]

作者: yl130029    時(shí)間: 2015-04-13 11:31
標(biāo)題: 請(qǐng)教一個(gè)語法題
求教:
if(a==NULL || a->b==NULL)
{
   ...
}
這樣寫對(duì)不對(duì)?好不好?
求大神指點(diǎn)
作者: hellioncu    時(shí)間: 2015-04-13 11:37
沒問題     
作者: zsszss0000    時(shí)間: 2015-04-13 11:59
if(NULL==a || NULL==a->b)
{
   ...
}

這種形式比較好!
作者: hellioncu    時(shí)間: 2015-04-13 12:27
zsszss0000 發(fā)表于 2015-04-13 11:59
if(NULL==a || NULL==a->b)
{
   ...


好些年前編譯器笨的時(shí)候這么寫還有的道理,現(xiàn)在沒有意義,讀起來別扭
作者: zsszss0000    時(shí)間: 2015-04-13 12:38
那如果寫成
if(a=NULL)不就麻煩了嗎?回復(fù) 4# hellioncu


   
作者: cjaizss    時(shí)間: 2015-04-13 12:54
zsszss0000 發(fā)表于 2015-04-13 12:38
那如果寫成
if(a=NULL)不就麻煩了嗎?回復(fù) 4# hellioncu

此處的if失去作用,那么編譯的時(shí)候告警全開,此處應(yīng)該會(huì)有一個(gè)告警
作者: Susake_    時(shí)間: 2015-04-13 14:06
zsszss0000 發(fā)表于 2015-04-13 12:38
那如果寫成
if(a=NULL)不就麻煩了嗎?回復(fù) 4# hellioncu

這個(gè)錯(cuò)誤很低級(jí)啊~~~~
作者: zsszss0000    時(shí)間: 2015-04-14 15:35
我們一般都是有報(bào)警不管,有編譯錯(cuò)誤,才管
所以為了減少錯(cuò)誤,代碼要按照規(guī)范來寫回復(fù) 6# cjaizss


   
作者: windoze    時(shí)間: 2015-04-14 15:52
如果是C++代碼,那么這樣寫:

  1. if(a && a->b) ...
復(fù)制代碼

作者: cjaizss    時(shí)間: 2015-04-15 08:35
zsszss0000 發(fā)表于 2015-04-14 15:35
我們一般都是有報(bào)警不管,有編譯錯(cuò)誤,才管
所以為了減少錯(cuò)誤,代碼要按照規(guī)范來寫回復(fù) 6# cjai ...

正確的做法應(yīng)該是:0warning,0 Error。
即便無法規(guī)避,也應(yīng)該為每個(gè)warning的原因?qū)懻f明
作者: hellioncu    時(shí)間: 2015-04-15 08:47
windoze 發(fā)表于 2015-04-14 15:52
如果是C++代碼,那么這樣寫:


難道C就不能這樣寫么?
作者: cjaizss    時(shí)間: 2015-04-15 09:12
如果a是指針
我不支持if(a)的寫法,而支持if(a!=NULL)
盡管看起來很像那個(gè)曾經(jīng)舌戰(zhàn)群儒的薛非,但我也還是有我的堅(jiān)持
NULL未必一定等于0
作者: windoze    時(shí)間: 2015-04-15 12:54
回復(fù) 11# hellioncu

C的語法你要去問薛非,我不敢廢話,怕被噴。
作者: windoze    時(shí)間: 2015-04-15 13:13
回復(fù) 12# cjaizss

在C++里,指針到bool有一個(gè)標(biāo)準(zhǔn)implicit cast,它保證任何類型的空指針都會(huì)被cast成false。
另外,C++11里的smart pointer之類的pointer-like-object也自定義了operator bool,保證當(dāng)它們引用的對(duì)象為空時(shí),返回false。
至于NULL,無論它的定義是什么,也只有一個(gè)值,而C++里有好幾種內(nèi)存結(jié)構(gòu)可能完全不一樣的“指針”,比如data pointer、function pointer、member pointer都可能有不一樣的結(jié)構(gòu),也可能會(huì)有不一樣的“空值”,你最好不要指望一個(gè)C語言里的宏能處理所有這些玩意兒。

所以C++程序最好直接使用if(p)/if(!p)而不是if(p==NULL)


至于C,我也不知道該怎么寫,你愛怎么寫就怎么寫。
作者: cjaizss    時(shí)間: 2015-04-15 14:04
windoze 發(fā)表于 2015-04-15 13:13
回復(fù) 12# cjaizss

在C++里,指針到bool有一個(gè)標(biāo)準(zhǔn)implicit cast,它保證任何類型的空指針都會(huì)被cast成f ...

或許吧,不過我基本不用面對(duì)C++,所以不用care這些.
作者: CUTianrui007    時(shí)間: 2015-04-28 11:00
直接加括號(hào)多好啊,何必糾結(jié)呢
作者: bigxhome    時(shí)間: 2015-04-29 16:12
這樣寫不易于別人讀代碼,不好
回復(fù) 1# yl130029



   
作者: lin5161678    時(shí)間: 2015-04-30 00:48
回復(fù) 12# cjaizss


    NULL從內(nèi)存上來說的確未必是 全部bit都是 0
但是C標(biāo)準(zhǔn)文檔有明文規(guī)定 NULL == 0
所以 直接 if(p) 沒什么問題 哪怕這個(gè)NULL不是0
作者: cjaizss    時(shí)間: 2015-05-01 10:45
lin5161678 發(fā)表于 2015-04-30 00:48
回復(fù) 12# cjaizss

找了下標(biāo)準(zhǔn),確實(shí)。
An integer constant expression with the value 0, or such an expression cast to type  void *, is called a null pointer constant. If a null pointer constant is converted to a  pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal  to a pointer to any object or function.




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2