C語言學習易錯點總結(一) 資料型別及運算子

2021-10-03 02:51:21 字數 1713 閱讀 7134

整型在16位的作業系統中,int佔2個位元組,short與int相同,long佔4個位元組。

//整形資料的溢位

int a,b;

a=32767

;b=a+1;

printf

("%d,%d\n"

,a,b)

;//a=32767,b=-32768

實型(浮點型)在16位的作業系統中,float佔4個位元組,有效數字6-7位,double佔8個位元組,有效數字15-16位,long double佔16個位元組,有效數字18-19位。

//實型資料的捨入誤差

float a,b;

a=123456.789e5

;b=a+20;

printf

("%f\n"

,a);

printf

("%f\n"

,b);

由於a是float,有效位數只有七位,而整數已佔五位,故小數二位後之後均為無效數字。

字元資料也可以看做整型量,但是整形量為二位元組,字元量為單位元組,當整型量按字元量處理時,只有低八位位元組參與處理。大小寫字母的ascii碼相差32。

字串常量字串常量佔的記憶體位元組數等於字串中位元組數加1。

在定義中不允許連續賦值int a=b=c=5;

所有的浮點運算都以雙精度進行,即使僅含float單精度,也要先轉換成double型。char型和short型參與運算時,必須先轉換成int型。在賦值運算中,賦值號右邊量的型別將轉換為左邊量的型別,如果右邊比左邊長,將丟失一部分資料,丟失的部分將四捨五入。

無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。

求餘運算子(模運算子)「%」,要求參與運算的量均為整型。

int i=

5,j=

5,p,q;

p=(i++)+

(i++)+

(i++);

//3個i相加,但最後i等於8,p=15q=(

++j)+(

++j)+(

++j)

;//j先自增3次,j=8,q=24

但是codeblocks的實際運算結果為p=18,q=22

//把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13

x=(a=5)

+(b=8)

;x*=y+7

;//x=x*(y+7)

單目運算子優先順序較高,算術運算子優先順序較高,單目運算子,三目運算子,賦值運算子具有右結合性。

逗號運算子和逗號表示式

表達形式為:表示式1,表示式2

分別求兩個表示式的值,並以表示式2的值作為整個逗號表示式的值

int a=

2,b=

4,c=

6,x,y;

y=(x=a+b)

,(b+c)

;//x=6,y=10

C語言學習(一)資料型別

一 資料型別 1 資料型別 基本型別 整型int 字元型char 浮點型 單精度實型float 雙精度實型double 構造型別 陣列型別 結構型別struct 聯合型別union 列舉型別enum 指標型別 空型別 void 2 常量與變數 常量 在程式執行過程中,其值不能被改變的量 define...

C語言學習系列(一)資料型別

基本資料型別由11個關鍵字組成 int short long unsigned char float dobule bool complex 複數 imaginary 虛數 c 語言內建運算子 sizeof 以位元組為單位給出指定型別的大小。編譯器可用 u 或 lu 列印。注 在運算物件是型別時,圓...

C語言易錯點總結

一下分為幾個部分分別加以說明。一 關鍵字 1.什麼是定義?什麼是宣告?兩者有何區別?答 定義是建立乙個物件,並未該物件分配一塊記憶體和取乙個名字,這個名字就是變數名或者物件名 宣告是告訴編譯器這個變數或者物件的記憶體已經存在,這裡只是引用。兩者最重要的區別在於,定義建立了物件並為物件分配了記憶體,而...