C 為什麼不叫 C

2021-06-11 19:56:34 字數 1375 閱讀 5026

《c++ primer》確實給我帶來了很多驚喜。

作為一本專業的具有較高門檻的"入門書",它有很多地方實在是國內的書不可及的,這不僅在於內容上的嚴謹,更表現在優秀的習題所帶給學習者的啟迪。

習題5.16

你認為為什麼c++不叫做++c?

看到這個習題,頓感眼前一亮(不禁想起某些國內書籍的題目,真是平淡如水),這對於理解前自增操作與後自增操作而言著實是個好的題目。

想弄明白這個問題,就需要先理解一些基礎的概念。什麼是自增操作呢?

++操作符,即自增操作符。自增操作符有兩種形式:前置操作和後置操作。前自增操作生成左值,在給運算元加1後返回改變後的運算元值。後自增操作生成右值,給運算元加1但返回未改變的運算元原值。

*事實上,因為c++具有操作符過載的功能,自增操作不僅僅可以表示加1

前置操作返回的是加1後的值,返回的是物件本身,所以這是左值。

後置操作返回的是加1前的值,其返回值可以近似的理解為與原運算元值相等的常量,所以是乙個右值。

附左值與右值的概念:

左值:可以出現在賦值操作左邊的值。非const左值可讀可寫。

右值:可用於賦值操作的右邊但不能用於左邊的值。右值只能讀不能寫。

左值可以出現在賦值操作右端,但右值不可以出現在賦值操作左端,將後自增操作置於賦值操作左端將會出現編譯錯誤。

另外需要注意:

由於後置操作符要返回未加1前的值作為操作的結果,所以必須要儲存運算元原來的值,對於比較複雜的型別,這種額外工作可能會花費更大的代價。

建議:只有在必要時才使用後置操作符。

最後,讓我們用全新的角度去審視c++的命名原因

c++之名是rick mascitti在2023年夏天定名的(參見the c++ programming language(special edition)1.4節),c說明它本質上是從c語言演化而來的,「++」是c語言的自增操作符。c++語言是c語言的超集,是在c語言基礎上進行的擴充套件(引入了new、delete等c語言中沒有的操作符,增加了物件導向程式設計的直接支援,等等),是先有c語言,再進行++。根據自增操作符前、後置形式的差別,c++表示對c語言進行擴充套件之後,還可以使用c語言的內容;而寫成++c則表示無法再使用c的原始值了,也就是說c++不能向下相容c了,這與實際情況不符。

為什麼C 不叫 C?

今天看了c primer,介紹前自增操作符和後自增操作的差別。順便了解了為什麼c 不叫 c?c 的c說明了它本質上是從c語言演化過來的,c 語言是c語言的超集,是在c語言基礎上進行的擴充套件 引入了new delete等c語言中沒有的操作符,增加了物件導向程式設計的支援,等等 是先有c語言,在進行c...

為什麼C 不叫 C

這是乙個叫人眼前一亮的題目,在讓人熟悉自增操作前置和後置兩種形式時,也可以了解下c 的命名來歷。自增 操作符有前置和後置兩種形式,其區別如下 i 返回的是左值,是i 加1 後 i 這個物件本身 i 返回的是右值,i 這個物件會加1 但返回的是i 未修改前的數值。兩種不同的返回值是由於其本質操作不同導...

為什麼叫C 而不叫 C

在討論這個問題之前,我們先討論一下自增和自減操作符。其它的話就不說了,先給個例子 int i 0 j j i j 1 i 1 j i j 1 i 2 雖然都使運算元加1,但是區別在於 i返回的是加1後的值,即返回的是物件本身。即將自己先加1再返回,返回的是物件 變數 本身,即是左值。而後置操作先返回...