在C語言中并沒有char類型的常量(但是在C++中卻有,字元常量都是char類型),其實是用int表示char,字元型與整型相比隻是更加節省記憶體。(在所有資料類型中,char類型占用的記憶體空間最少)
有符号的字元表示-128127,無符号字元表示0255。char相當于signed char還是unsigned char取決于編譯器。
字元型資料在記憶體中是以二進制形式存放的,并不是真正的把一個字元存進記憶體裡。在對字元型資料進行相加減運算的時候,系統會首先将char型資料以隐形的方式轉化為int型資料再進行相加減運算。是以,由字元型資料在記憶體的存儲方式來看,字元型資料在做數字運算時實際上是對字元本身對應的ASCII碼進行相應的數值運算。
這種在單片機的通信中應用的最多:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csUnRyQmZk1mYwRnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzcjMxMjM0kDMwITNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
在單片機的運算中,調試接口答應的都是char類型,但是底層會将char類型轉換成int類型,最終全部按照二進制計算。
整型和字元型可以互相轉換:
(char)整型變量=字元型變量
(int)字元型變量=整型變量
如下例子,輸出的結果為一個為 ch 表示的字元,另一個為字元對應的 ASC II碼。
char ch=‘a’;
printf("%c%d “,ch,ch);//分别輸出ch的字元和對應的ASCII碼。即列印出的是字元和整數。
printf(”%c%c%c",ch,ch+1,ch+2);//輸出“abc”
char變量可以包含任意單個字元,是以可以給char類型的變量指定字元常量,作為其初始值。
字元常量是一個放在單引号中的字元。
char letter=‘A’;
char digit=‘9’;
也可以使用轉義序列指定字元常量,如:
char newline=’\n’;
char tab=’\t’;
也可以用整數值初始化char類型的變量,隻要該值在編譯器許可的char類型的值域内即可,如:
char ch=74;
既然char和int本質都是整數,為什麼還要作區分呢?
因為字元的個數相對較少,因而char型變量的存儲單元可以比int型變量的存儲單元小。其實就是提出一種char型變量專門存儲字元,友善程式員的資料選擇。
————————————————
版權聲明:本文為CSDN部落客「zhjqxy」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/zhjqxy/article/details/52975140