天天看點

2021-08-30 C語言學習第一天資料和C

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的傳回類型。

繼續閱讀