go語(yǔ)言的++/--操作

go語(yǔ)言的++/--操作

C/C++程序員的窘境

C/C++程序員在面試的時(shí)候經(jīng)常會(huì)被面試官問(wèn)到++/--的問(wèn)題而搞暈,其實(shí)面試官自己在出題的時(shí)候也未必能弄
明白,只不過(guò)恰好在面試你之前在電腦上驗(yàn)證了一把,所以顯得他知道的很多,不要問(wèn)我怎么知道的:-)

go語(yǔ)言的++/--

go語(yǔ)言對(duì)++/--的使用做了優(yōu)化(限制),個(gè)人感覺(jué)這種限制非常好;C/C++里面對(duì)++/--的使用雖然很靈活,但是這種靈活容易導(dǎo)致混淆,引入潛在風(fēng)險(xiǎn)。

go語(yǔ)言里面對(duì)++/--的限制只有一條,即:

  • ++/--是語(yǔ)句,不是表達(dá)式

掌握這個(gè)原則就很好理解go對(duì)++/--的使用限制了。

  1. ++/--是語(yǔ)句,不是表達(dá)式
  var i int
  var j int
  j = i++;

這類(lèi)j=i++語(yǔ)句不正確,因?yàn)閕++是一條語(yǔ)句,不是表達(dá)式,而此時(shí)需要的是表達(dá)式。

  1. 前加/后加, i++ vs. ++i
    既然++/--是語(yǔ)句,不是一個(gè)表達(dá)式,那么i++和++i的功能是一樣的,把++放在后面只是閱讀的傳統(tǒng)習(xí)慣。

下面是官方對(duì)++/--的解釋

Why are ++ and -- statements and not expressions? And why postfix, not prefix?

Without pointer arithmetic, the convenience value of pre- and postfix increment operators drops. By removing them from the expression hierarchy altogether, expression syntax is simplified and the messy issues around order of evaluation of ++ and --(consider f(i++) and p[i] = q[++i]) are eliminated as well. The simplification is significant. As for postfix vs. prefix, either would work fine but the postfix version is more traditional; insistence on prefix arose with the STL, a library for a language whose name contains, ironically, a postfix increment.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容