單引號、雙引號、int和char
首先說一下C語言中用單引號和雙引號的不同(一直搞不清楚):
單引號代表的是一個整數,而這個整數的值是編譯器所采用的字符集中的字符序列對應的值。所以一般‘A‘和ASCII中的65意義相同。
對於雙引號定義的我們可以叫他“字符串”,那麽對於單引號定義的我們叫他字符常量或者字符。
再說說int和char,現在感覺自己C語言中好多概念模糊啊,很多到用到的時候總是弄不清楚,基礎不打好怎麽向上進步呢?所以還是靜下心來好好鞏固一下基礎吧。
int是有符號整型,大部分系統默認int是long int,占4個字節,也就是32比特,32位二進制數。short int 就是占兩個字節了。
而char是字符型,占一個字節,可以用來表示一個字節的有符號整型數,但是用char定義整型數的時候要註意區分有符號和無符號,有符號char型的取值範圍是(-128~+127),無符號整型數的取值範圍是(0~255),定義的數一旦超過這個範圍,即產生溢出,使數據出錯,這是很嚴重的錯誤,千萬記住。不同的編譯器char表示的不同,我用的 cfree5裏面,char就默認是有符號char(估計大部分也都是有符號的),最大只能定義127。也可以定義一個字符。但是定義的這個字符是以ASCII碼值的8位二進制信息存放在內存裏面的,不是一個字符存放在裏面。那麽再結合int來看,也就是說我們可以定義一個int類型的變量來存放四個字符。也最多只能存放4個單字符。但是這種方式編譯器會警告。
所以有時候想要節省單片機的空間的話可以定義char類型,但是有兩點需要註意,一是註意你需要的數是有符號還是無符號,二是註意這個數不要溢出。
之前我用單片機編程的時候。看人家用char我也用char。人家用unsigned char我也用,一點不清楚到底什麽時候用這個?為什麽用這個。今天總結完這些,開始明白了。
既然char和int本質都是整數,為什麽還要作區分呢?
因為字符的個數相對較少,也就128個,因而char型變量的存儲單元可以比int型變量的存儲單元小。其實就是提出一種char型變量專門存儲字符,方便程序員的數據選擇。
下面簡單講一下字符串:
定義一個字符串常量的時候主要有兩種方法:
#include "stdio.h" char ch[] = "abcdef";//用一維數組來存放字符串 char *p = "hello,world";//用一個指針指向字符串的開頭地址 int main(){ printf("%s\n",ch); printf("%s\n",p); puts(ch);//使用puts函數輸出字符串 puts(p); //puts輸出字符串之後會自動換行 }
但是字符串數組就需要二維數組來存放了。其實字符串數組就是二維數組。
#include "stdio.h" char a[3][6] = {//二維數組存放多個字符串 "hello", "world", "hi!", }; int main(){ for(inti = 0;i<3;i++){ printf("%s\n",a[i]); } }
其實都是很基本的C語言知識,但是誰讓當時自己沒有認真學的呢?現在只能慢慢來彌補了。
單引號、雙引號、int和char