簡體   English   中英

C中的短int文字

[英]short int literals in C

為什么'C'中沒有短文字?

在C中使用短的int文字是沒有意義的,因為所有整數表達式都被評估為子表達式的大小至少為int。

或者:因為不需要它們!

需要各種大小的數據類型以適應底層硬件和/或節省存儲空間,但文字是一種編譯時構造,無論如何都會存儲到適當的數據結構中。

它與floatdouble不同,因為相同的數字實際上具有不同的內部表示 - 無論如何,不​​僅僅是幾個前導零。

類似地, charshort之間存在差異,即使它們可能存儲在相同的位中:如果程序員正在討論字符數據,則通常更方便的是指定'A'不是65

但是短程99和int 99看起來與程序員相同,在程序中被視為相同......范圍更廣的類型將很容易完成兩者的工作。

如果我們正在談論原始語言設計,請記住C在PDP-11 CPU(16位)上獲得了大部分現有形狀。 所以他們有算術的整數和字符串存儲的字符。 指針與整數基本相同。

這種語言非常務實,后來才有了更正式和復雜的語法。 所以答案是,恰好就是這樣。 很久以后我們得到了32位和64位CPU,需要區分不同長度的整數。

直到今天,我幾乎所有的C程序都編碼,好像除了char和整數之外沒有其他類型。 哦,順便說一句,C中的“char”可以根據標准簽名和簽名。 這反映出字符用於字符存儲(字符串)和算術的內插。

為了澄清,(謝謝semaj)編譯器可以選擇將聲明為“char”的變量視為“unsigned char”。 對於“int”,這不會發生。 “int”始終是簽名的,但是使用chars你無法確定。 你必須假設一個char可以有未簽名或簽名的算術。 這是一種速度優化,可以適應任何實現速度更快的CPU。 即焦點是作為存儲容器的字符,而不是算術類型。 (它的名字也是贈品。它可能被稱為“短”或“小”,但出於某種原因被稱為“char”。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM