天天看點

C語言學習筆記系列—第三章

作者:正能量IT先生

繼續第二章之後的學習,上一章學習認識了一些最簡單的C程式。第三章将基于C的資料類型進行筆記學習,和之前一樣本文還是已一個重新學習角度去認識C語言,是以文中隻會引用到需要資料類型介紹。不會像其他C語言教程中直接将所有類型都堆積上(在最後總結部分列出來了僅供參考)。

學習參考書籍《C Primer Plus》

1,資料類型

1.1,int類型(整型)

C語言中使用最多的資料類型,可表示不同的取值範圍和正負值。但是必須是一個整數,可以是正整數,0或者負整數,隻要是整數就行。都2022年了使用的作業系統基本都是64位了,是以不太擔心存儲整數。

之前在第一章和第二章中都是用聲明int的操作:

int a,b,c;
int n;
int n2; 
int n3;           

但是以上都隻是聲明變量類型并沒有給變量指派,指派方式可以使用a = 3;或是以後章節會介紹輸入方式(scanf())的方式給變量指派。C語言把不含小數點和指數的數作為整數。是以說,24和-56都是整型常量,但是24.0和2.2E1則不是整型。

1.2,輸出(列印)int值

使用printf()函數列印int類型的值時使用%d來表示列印整數的位置。%d稱為轉換說明,它指定了printf()應使用什麼格式來顯示一個值。格式化字元串中的每個%d都與待列印變量清單中相應的int值比對。就比如下列來自第二章程式中的printf():

printf("a與b的乘積c = %d\n",c);

特别注意,如果在printf()中缺少參數(也就是說沒有給%d提供任何值的話),那麼程式就會列印程式(記憶體)中的任意值。比如下列操作:

printf("a與b的乘積c = %d\n"); //預設參數

那麼輸出結果将會是:

a與b的乘積c = -1163170912

1.3,float和double類型(浮點型資料類型)

在1.1介紹了整型,也就是不包含小數點類型。那麼帶小數點的資料類型就是使用float和double,是以在寫程式的時候根據需求聲明,這兩種浮點類型主要差別在于它們的取值範圍,如下表所示:

類型 比特數 有效數字 數值範圍
float 32 6-7 -3.4*10(-38)~3.4*10(38)
double 64 15-16 -1.7*10(-308)~1.7*10(308)

在C語言程式中聲明浮點型變量以及指派方式(與之前整型的指派方式大同小異):

float noah, jonah;
double trouble;
float a=0.1f;           

1.4,輸出(列印)float和double值

與整型int不同的是printf()函數使用%f轉換說明列印十進制記數法的float和double類型浮點數。在C語言中,float類型的資料預設保留小數點後6位,不足6位的以0補齊。舉例:

int b;  
float a=0.1f;   //float類型指派時 補充f
b = 6 ;
printf("a與b的乘積c = %f",a*b);
printf("a與b的乘積c = %.2f",a*b);      //補充一句如果覺得預設保留6位小數點看着煩可以使用(%.2f)保留兩位小數           

2,程式案例

錯誤版本:

#include <stdio.h>
int main(void)
{
    int n = 3;
    int m = 2;
    float f = 9.0f;
    float g = 5.0f;
    
    printf("%d\n", n, m);    
    printf("%d %d %d\n", n); 
    printf("%d %d\n", f, g); 
    
    return 0;
}
           

輸出的結果為:

C語言學習筆記系列—第三章

錯誤版本輸出結果

其實是可以看出問題均出現在了最後的輸出環節(printf())中:第九行中變量過多、第十行中變量過少、第十一行由于f和g聲明資料類型為浮點型,是以在輸出時應該使用%f來表示輸出浮點型變量值。是以正确版本應該是:

#include <stdio.h>
int main(void)
{
    int n = 3;
    int m = 2;
    float f = 9.0f;
    float g = 5.0f;
    
    printf("%d %d\n", n, m);   
    printf("%d\n", n);
    printf("%f %f\n", f, g); 
    
    return 0;
}
           

這樣輸出結果為:

C語言學習筆記系列—第三章

正确版本輸出結果

3,字元資料類型-char類型

char類型用于存儲字元(如,字母或标點符号),是以char類型變量的聲明方式與其他類型變量的聲明方式相同。但其實char類型在程式中也算是一個整型資料,是以如果在輸出printf()中使用%d的話,答案輸出為90,這是因為大寫的Z在ASCII碼中十進制存儲是90。比較有意思,讀者如果有興趣可以多嘗試一些輸出方式或者聲明方式,比如将char KingZsf聲明為90輸出嘗試使用%c同樣得出結果是Z。

char KingZsf;
char wca, ltcb;
char KingZsf = 'Z';   //通過初始化把字母A賦給KingZsf
printf("%c", KingZsf);   //輸出結果為 Z
printf("%d", KingZsf);   //輸出結果為 90           

4,總結

補充一些内容便于記,包括在第二章沒有詳細介紹的\n(字元轉義序列)

C語言的資料類型關鍵字

最初 K&R 給出的關鍵字 C90标準添加的關鍵字 C99标準添加的關鍵字
int signed _Bool (布爾型)
short void _Complex(複數)
long _Imaginary(虛數)
unsigned
char
float
double

字元轉義序列(粗體比較常用)

名稱 轉義序列 名稱 轉義序列
換行符 \n 回退符 \b
水準制表符 \t 垂直制表符 \v
單引号 \' 換頁符 \f
雙引号 \" 問号 ?
回車符 \r 報警(響鈴)符 \a
反斜杠 \\

本章主要介紹了程式的資料類型(整型、浮點型和字元型),知識點還有很多細節感興趣的讀者可以移步至C語言參考書,很多概念沒有詳細寫。

如有不足或有疑問歡迎各位大佬們指正,同時也希望非IT專業的小白們能感受到C語言的魅力。如果對你有幫助的話點贊收藏哦!

[1] 《C Primer Plus》

繼續閱讀