為什麼 C 語言中的一些特性不被 C 支援?

時間 2021-05-31 17:17:36

1樓:apeng

多謝各位的回答

這裡 http://

正好比較不錯專門計論了 c與c++ 不相容的那一部分少量特性的事情,,有興趣的可以看看。

2樓:Sunchy321

參見ISO C++ C.1。

例如- 'x'型別不同是為了過載

- void*向O*的隱式轉換被禁止是為了型別安全- ?: = ,的結果可以是左值是因為「C++ is an object-oriented language, placing relatively more emphasis on lvalues.」有些不明所以。

- 除了typedef struct s s;之外,不允許乙個typedef name是已經定義的結構標籤是因為在C++中類型別可以不帶struct/class/union。

- 不允許整數型別到列舉的隱式轉換是為了安全。等等。

3樓:陳碩

其實就是政治原因,C 標準委員會的人跟C++標準會員會重合度不高(而且據說C99標準會員會的人和C89的重合度也不高),C++ 熱臉貼了 C 的冷屁股。

C++98 倒是盡量保持和 C89 相容,但是 C99 故意搞得和 C++98 不相容,例如引入 _Bool 型別,而不是使用 C++ 定義的 bool 型別。類似的還有 const,C++ 的 const 全域性變數大致等於 C 的 static const 全域性變數。(To language lawyer:

不要跟我這兒提「C 沒有全域性變數"了,OK?)

C 語言裡 sizeof('a') == sizeof(int),而 C++ 裡 sizeof('a') == sizeof(char) == 1。

C 語言裡 void f() == void f(...),而 C++ 裡 void f() == void f(void) 。

C 語言裡多個 .c 檔案可以放全域性的 int x; (無初值) ,而 C++ 會認為重複定義。

c語言中為什麼6 5 4 2等於5?

喲呵呵 你把5 4,寫成5.0 4 或者 5F 4看看,4同理。這其實是乙個計算精度轉換的問題。在C語言中,計算結果的精度取決於參與計算的數的最高精度。簡單說,1 高精度與高精度計算得到的結果是高精度的。2 低精度與低精度計算得到結果是低精度的。3 低精度與高精度計算得到結果是高精度的。記住以上三點...

為什麼別的語言中沒有像C語言一樣有指標?

liouperng 因為現在指令碼語言 函式式語言大行其道,不是正規化不需要,就是為了菜鳥好學。C類語言 C C 有指標,Pascal類語言 Delphi Ada 也有指標。 不胖的羊 為什麼大部分語言都不用指標呢?答案可能是這些語言把該用指標的部分都用C C 寫了,包在標準庫里。指標是大殺器,不敢...

這個是為什麼?(C語言中輔助控制語句continue語句)

豬玀 if不是迴圈啊。for迴圈的語句包括兩個 if和printf,if語句裡的Continue的意思是,當條件為真,執行continue,continue結束本次迴圈,直接開始下一輪迴圈,所以跳過了迴圈裡的第二句printf。當條件為假時,不執行continue,所以會執行第二條語句printf。...