整型在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.什麼是定義?什麼是宣告?兩者有何區別?答 定義是建立乙個物件,並未該物件分配一塊記憶體和取乙個名字,這個名字就是變數名或者物件名 宣告是告訴編譯器這個變數或者物件的記憶體已經存在,這裡只是引用。兩者最重要的區別在於,定義建立了物件並為物件分配了記憶體,而...