[英]short int literals in C
為什么'C'中沒有短文字?
在C中使用短的int文字是沒有意義的,因為所有整數表達式都被評估為子表達式的大小至少為int。
或者:因為不需要它們!
需要各種大小的數據類型以適應底層硬件和/或節省存儲空間,但文字是一種編譯時構造,無論如何都會存儲到適當的數據結構中。
它與float
與double
不同,因為相同的數字實際上具有不同的內部表示 - 無論如何,不僅僅是幾個前導零。
類似地, char
和short
之間存在差異,即使它們可能存儲在相同的位中:如果程序員正在討論字符數據,則通常更方便的是指定'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.