C語言學習第一天
- 資料和C
-
- 變量和常量
- 資料類型關鍵字
- C語言的基本資料類型
資料和C
本文主要學習以下内容:
- 關鍵字: int 、short 、long 、 unsigned 、char 、 float 、double 、 _Bool 、 _Complex 、 _Imaginary
- 運算符: sizeof()
- 函數: scanf()
- 整數類型和浮點類型的差別
- 如何書寫整型和浮點型常數,如何聲明這些類型的變量
- 如何使用printf()和scanf()函數讀寫不同類型的值
變量和常量
資料主要分為變量與常量資料,有些資料類型在程式使用之前已經預先設定好了,在整個程式的運作過程中沒有變化,這些稱為常量;其他資料類型在程式運作期間可能會改變或被指派,這些稱為變量。
資料類型關鍵字
C語言的資料類型關鍵字有:int 、short 、long 、 unsigned 、char 、 float 、double 、 _Bool 、 _Complex 、 _Imaginary
int關鍵字表示整數類型。後三個關鍵字(long 、short 、signed 和unsigned)用于提供基本整數類型的變式,如unsigned short int 和long long int。
另外,char類型也可以表示較小的整數
float 、 double 、和long double表示帶小數點的數。 _Bool類型表示布爾值(true或false), _Complex和_Imaginary分别表示複數和虛數。
這些關鍵字建立的類型,按計算機的存儲方式可分為兩大基本類型:整數類型和浮點數類型。
-
整數
在C語言中,整數是沒有小數部分的數。例如,2,-3,256都是整數。3.14和2.00都不是整數
-
浮點數
浮點數與數學中實數的概念差不多。2.75 、3.16E7 、7.00和2e-8都是浮點數。在一個值後面加上小數點,該值就成為一個浮點值。這裡3.16E7表示3.16乘以10的7次方。
浮點數和整數的存儲方案是不同的。計算機把浮點數分成小數部分和指數部分來表示,而且分開存儲這兩部分。
C語言的基本資料類型
-
int類型
int類型是有符号整型,int類型的值必須是整數,可以是正整數 、負整數或零。
-
聲明int變量
先寫上int,然後寫上變量名,最後加上一個分号。可以在int後面列出多個變量名,變量名之間用逗号分隔。如下:
int erns;
int hogs,cows,goats;
-
初始化變量
初始化變量就是為變量賦一個初始值。可以直接在聲明中完成。
int hogs = 21;
int cows =32,goats = 14;
int dogs,cats = 94; /*有效,但是這種格式很糟糕 */
上面的最後一行隻初始化了cats,并未初始化dogs。這種寫法很容易被誤會dogs也初始化為94,最好不要這樣寫。
-
列印int變量
可以使用printf()函數列印int類型的值,使用%d。
%d為轉換說明,它指定了printf()應使用什麼格式來顯示一個值。格式化字元串中的每個%d都要與待列印的變量清單中的int值比對。如果數量不同,編譯器不會報錯,但是會得到錯誤的結果。
int ten = 10;
int two = 2;
printf("%d minus %d is %d\n",ten,2,ten -two)
-
八進制和十六進制
十六進制的每一位的數恰好是由4位二進制數表示。例如:十六進制數3的二進制表示是0011,5是0101,是以十六進制的35表示是00110101。這種轉換關系使得十六進制和二進制的轉換非常友善。
316 + 5 = 3222*2+5
在二進制裡面乘以2的多少次方就是把這個數小數點右移幾位。
如果要列印不同進制的數,需要使用不同的轉換說明:
十進制為%d
十六進制為%x
八進制為%o
另外,如果要顯示各進制數的字首,必須使用%#o 、%#d 、 %#x 。
-
char類型
char類型用于存儲字元(如,字母或标點符号),但是從技術層面來看,char是整數類型。因為char類型實際上存儲的是整數而不是字元。計算機使用數字編碼來處理字元,美國最常用的是ASCII編碼,C語言也使用此編碼。存儲字母A實際上存儲的是整數65,C語言把1位元組定義為char類型占用的位數。
聲明char類型的變量與其他方式相同。
初始化時不必背下ASCII碼,可以直接使用一個單引号。
char broiled;
broiled = 'T';
注意不能使用雙引号,雙引号是字元串
-
非列印字元
單引号隻适用與字元 、數字 和标點符号,有些ASCII字元會列印不出來(如,倒退,換行,終端響鈴或蜂鳴)。C語言提供了3種方法來表示這些字元。
第一種方法是使用ASCII碼
第二種方法是使用轉義序列
轉義序列 | 含義 |
---|---|
\a | 警報 |
\b | 倒退 |
\f | 換頁 |
\n | 換行 |
\r | 回車 |
\t | 水準制表符 |
\v | 垂直制表符 |
\\ | 反斜杠 |
\’ | 單引号 |
\" | 雙引号 |
\? | 問号 |
\0oo | 八進制 |
\xhh | 十六進制 |
- 列印字元
#include<stdio.h>
int main(void)
{
char ch;
printf("Please enter a character.\n");
scanf("%c",&ch);
printf("the code for %c is %d.\n",ch,ch);
return 0;
}
運作該程式後,輸出示例如下:
Please enter a character.
C
the code for C is 67.
-
_Bool類型
_Bool類型用于表示布爾值,即邏輯值true和false。因為C語言用值1表示true,值0表示false,是以_Bool類型實際上也是一種整數類型。但原則上它僅占用一位存儲空間。
-
float 和double類型
C标準規定,float類型必須至少能表示6位有效數字,即float類型必須至少精确表示小數點後的6位有效數字,如33.333333.
C語言提供的另一種浮點類型是double(意為雙精度)。double類型必須至少能表示10位有效數字。
-
類型大小(sizeof)
sizeof是C語言的内置運算符,以位元組位機關給出指定類型的大小。C99和C11提供%zd轉換說明比對sizeof的傳回類型。