基本類型:整型與字符型


一、整型int

1.1 概述

整數類型用來表示不同的取值范圍和正負值,含義和數學一樣,整數是沒有小數部分的值;

區分正負的類型,稱為有符類型(signed),無正負的類型(只有正值),稱為無符類型。 (unsigned);當聲明某變量類型為無符號類型時,需要在類型聲明前顯示使用unsigned;

1.2 int類型

short int 類型:簡寫short,C規定占用的空間不能多於int

long int 類型: 簡寫 long ,占用的空間可能比int多;

long long int 類型: 簡寫 long long 占用的空間可能比long多;

C標准對基本數據類型只規定了允許的最小大小,這樣占用空間的規定是為了適應不同的機器,int 默認被認為是計算機處理整數類型時最高效的類型;考慮某些硬件寄存器16位或者程序開發占用空間資源緊缺情況下,才考慮使用short,只有超出int類型表示的范圍才考慮long及long long類型;

 1 //占用空間的大小
 2 #include <stdio.h>
 3 int main(void)
 4 {
 5      /* c99 provides a %zd specifier for sizes */
 6      printf("Type short     has a size of %zd bytes.\n", sizeof(short));
 7      printf("Type int       has a size of %zd bytes.\n", sizeof(int));
 8      printf("Type long      has a size of %zd bytes.\n", sizeof(long));
 9      printf("Type long long has a size of %zd bytes.\n",sizeof(long long));
10      return 0;
11 }
12 
13 //Ubuntu16.04 64bit print:
14 Type short     has a size of 2 bytes.
15 Type int       has a size of 4 bytes.
16 Type long      has a size of 8 bytes.
17 Type long long has a size of 8 bytes.

1.3 C語言中的轉換說明打印不同int類型

以十進制顯示輸出使用%d,

以八進制顯示輸出使用%o或%#o(在數字前面顯示進制代表符號)

十六進制顯示輸出使用%x或%X或%#X;

short類型使用前綴h:即%hd表示以十進制顯示short類型的整數,%ho以八進制顯示short類型的整數,%hx表示以十六進制顯示short類型的整數;

1 #include <stdio.h>
2 int main(void)
3 {
4     short  i = 4;
5     printf("i = %hd \n", i);
6     printf("i = %#ho \n", i);
7     printf("i = %#hx \n", i);
8     return 0;
9 }

long 類型使用前綴l:即%ld表示以十進制顯示short類型的整數,%lo以八進制顯示short類型的整數,%lx表示以十六進制顯示short類型的整數;

相應的,long long類型使用前綴ll;

注意:

不同的轉換說明是指定計算機以什么樣的格式進行存儲和計算,使用不正確的轉換可能產生錯誤;

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     short sn = 200;
 5     long ln = 65537;
 6     long long lln = 184467440737095516;
 7     printf(" sn = %hd and %d\n", sn, sn);
 8     printf(" ln = %ld not is %hd\n", ln, ln);
 9     printf("lln = %lld not is %ld \n", lln, lln);
10     return 0;
11 }
12 //print as:
13  sn = 200 and 200
14  ln = 65537 not is 1
15 lln = 1234567891708641112 not is -171798692

結論:

1.int類型被認為是計算機處理整數類型時最高效的類型,當給函數傳遞參數時,編譯器把short類型自動轉換為int類型

2.65537已超出short類型能表示的范圍,使用%hd轉換說明來顯示一個已超出short類型的數據時,計算機則進行顯示該較大整數截斷成short類型的值后進行輸出顯示,由此可推出:超出類型所表示的范圍時,數據將產生截斷;

short類型最大范圍:2^16 - 1 = 65535 即這16位上的數字全是1

可以推出65537用二進制表示時第17位和第1位上的數字為1其余為0;

用short類型顯示輸出long類型數據時,只顯示后16位,故輸出為1;

二、字符型char

2.1 字符型的本質

計算機使用數字編碼來處理字符,即使用特定的整數表示特定的字符,故char本質上為整型;

美國最常用的編碼是ASCII編碼,標准范圍0~127,只需要7位二進制即可表示;但也存在其他字符集超過了127,例如日本漢字kanji字符集,商用統一碼Unicode等等;

C語言把1字節定義為char類型占用的位數;即1Byte=8bit,故無論16位還是32位系統都可以使用char類型

2.2 字符常量和初始化

用單引號括起來的單個字符被稱為字符常量,當編譯器發現’A’便會將其轉換為相應的代碼值(65);注意:單引號僅適用於字符、數字和標點符號;

2.3 非打印字符

非打印字符通常是一些表示行為的字符,如退格、換行、終端響鈴或封鳴,C語言中使用轉義序列來表示一些特殊的字符,同樣的將轉義序列賦值給字符變量時,必須使用單引號將轉義序列括起來;

 1 轉義序列         含義
 2 \a              警報
 3 \b              退格
 4 \f              換頁
 5 \n              換行
 6 \r              回車
 7 \t              水平制表位
 8 \v              垂直制表位
 9 \\              反斜杠(\)
10 \’              單引號
11 \”              雙引號
12 \?              問號

2.4 打印字符

1 #include <stdio.h>
2 int main(void)
3 {
4     char ch;
5     printf("Please enter a character…\n");
6     scanf("%c",&ch)
7     printf("The code for %c is %d\n", ch, ch);
8     return 0;
9 }

輸入某字母后按下回車鍵,scanf()函數會讀取輸入的字符,&符號表示將輸入的字符賦給變量ch,printf()函數將打印兩次ch,一次打印字符類型(轉換說明%c),一次打印整型(%d)

2.5 字符型是有符號還是無符號

取決於編譯器,有的編譯器將char實現為有符號類型,表示范圍是-128~127,有些編譯器則實現為無符號類型,即表示范圍是0~255;但是C語言允許在char前面使用signed,unsigned來顯示指定具體;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM