关于表达式i+++i+++i++有感
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
????前幾天我看到了關(guān)于c語(yǔ)言中i+++i+++i++的問(wèn)題討論。有認(rèn)為值是確定的,也有認(rèn)為是不確定的。我本來(lái)傾向于確定的,即well-defined。本來(lái)想NB一把,咱們翻標(biāo)準(zhǔn)準(zhǔn)確說(shuō)明它就是well-defined,結(jié)果卻發(fā)現(xiàn)它是undefined。這不,一想那不是更厲害了,直接把前面認(rèn)為確定的人都否定了。當(dāng)即組織材料,自己也寫(xiě)個(gè)回復(fù)。寫(xiě)的出來(lái)后那是相當(dāng)?shù)挠谐删透邪?#xff0c;就等著別人來(lái)討論討論。但是我更渴望別人也覺(jué)得我觀點(diǎn)是對(duì),滿足一下自己這顆虛榮心,^_^。不過(guò)好傷心啊,沒(méi)人回復(fù)。
? ? 不過(guò)話說(shuō)回來(lái)啊,這個(gè)過(guò)程挺有趣的。先是自己帶著觀點(diǎn)去找證據(jù),結(jié)果發(fā)現(xiàn)觀點(diǎn)錯(cuò)了,又找證據(jù)證明另一個(gè)觀點(diǎn),最后把一點(diǎn)一點(diǎn)碎片組織起來(lái),就成一篇小文章了。我想啊,那些發(fā)表論文的,當(dāng)寫(xiě)完審查完那一刻肯定是相當(dāng)滿足了。開(kāi)始先是一個(gè)一個(gè)的lemma, 然后是corollary, 最后就是自己的theorem了。突然感覺(jué)寫(xiě)程序的過(guò)程也很像。先是小函數(shù),小函數(shù)組成大一點(diǎn)的函數(shù),慢慢的自己的程序也就浮現(xiàn)出來(lái)。其實(shí),還有很多過(guò)程都很像,不是嗎?
? ? 好了,在這就再貼下自己的回答,保存下,也再成就感一下。如果有錯(cuò)誤,麻煩大家給指出啦。
標(biāo)準(zhǔn)中提到tranlation有7個(gè)階段,下面是第3階段的描述(c99 5.1.1.2)
下面是說(shuō)明這個(gè)式子是undefined的。其實(shí)標(biāo)準(zhǔn)里面讓它undefined的說(shuō)明關(guān)鍵就一個(gè)了(c99 6.5):
所以,上訴式子是“Between the previous and next sequence point“無(wú)誤了。而且標(biāo)準(zhǔn)中還給了兩個(gè)由于6.5那段而undefined的例子:
i = ++i + 1; a[i++] = i;所以,我的結(jié)論是式子i+++i+++i++只能被分析成(i++)+(i++)+(i++),但結(jié)果是undefined。
ps:對(duì)于6.5那段的第二句我不是太理解,參考了一下別人的說(shuō)法暫時(shí)理解為:如果兩個(gè)sequence points之間要改變一個(gè)object所存的值,那么之前如果有讀取此object的值,那么這個(gè)之前讀的舊值必定是用來(lái)確定新值的。
不知道理解正與否。
參考:
ISO標(biāo)準(zhǔn)
http://stackoverflow.com/questions/3978625/using-postfix-increment-in-an-l-value
http://c-faq.com/expr/seqpoints.html
轉(zhuǎn)載于:https://my.oschina.net/u/582355/blog/137168
總結(jié)
以上是生活随笔為你收集整理的关于表达式i+++i+++i++有感的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 复习-网络编程之IP和端口号
- 下一篇: IOS定位核心与地图