當前位置:編程學習大全網 - 編程語言 - C語言中,字符常量不是char類型嗎?《程序員入門必備》這本書中,有壹段論述讓我思維混亂了,原文如下:

C語言中,字符常量不是char類型嗎?《程序員入門必備》這本書中,有壹段論述讓我思維混亂了,原文如下:

這書別看了……講得忒亂。C語言入門推薦看《C和指針》或者《Linux C編程壹站式學習》。實在不行看譚浩強的《C程序設計》也湊合,經典的K&R版《C語言程序設計》是進階讀本。《C陷阱和缺陷》側重C語言的使用誤區,《C專家編程》部分內容跟UNIX操作系統相關。

(1)妳在源代碼中寫a和'a'有什麽區別?

妳的程序實際上是寫在txt文件中(.c、.cpp啥的都是無格式文本)

如果妳直接在源程序中寫a,則編譯器把它當成是妳程序中的壹個變量;

例如妳在程序代碼中寫壹句"int abc = 100;",abc中的a被編譯器理解成壹個標識符/名稱的組成部分。

如果妳在源程序中寫'a',則編譯器遇到單引號把它理解成壹個字符常量,這完全是編譯器詞法分析過程中的區別。

不管是a還是'a',妳寫在源程序文件中的內容都可以叫做代碼的組成成分(如果不是資源數據)。

(2)'a'並非char類型,事實上它是int類型

這話說得不僅讓人難以理解,而且根本就是錯的。'A'是char類型常量無疑,註意區分術語integral type(整數類型,包括有符號或無符號的int, short, char)和integer(整型int),看英文書這個區別很明顯,比如case子句都要求integral type,不壹定是int類型。

(3)啥是ASCII碼

0x34、'a'等都是二進制機器碼的壹種記錄方式。程序編譯之後,'A'和數值65的二進制碼是相同的,所以有時用int類型的數值常量代替char常量能得到同樣的結果(很多時候還牽涉到隱式類型轉換,初學者先不管),這其實是不太規範的。計算機喜歡用機器碼,源碼是寫給人看的,所以有些程序雖然機器碼是正確的,但源碼語義不明,也是不好的。

(4)

樓主還是換本書看吧,真心的。入門的話很多問題不必深究,先寫程序跑起來,選教材最重要是作者講述方式與妳的理解方式壹致。

  • 上一篇:GNSS+IMU+MM車載組合導航系統
  • 下一篇:我想知道CAXA、CAD、SOLIDWORKS、PROE、UG、它們的發展順序?
  • copyright 2024編程學習大全網