(建立于2017/8/14)
1.float型變量a隻能接受7位有效數字,是以最後三位是不準确的,但double型數字是可以全部接受10位有效數字的
2.常用轉義字元:
\0 空字元 0
\t 水準制表,跳到下一個Tab位置 9
\r 回車,将目前位置移到本行的開頭 13
\n 換行,将目前位置移到下一行的開頭 10
' 雙撇号 34),"" 單撇号 39
3.逗号運算符(逗号運算的結合性是從左至右,完畢之後整個表達式的值是最後一個表達式的值。)
#include<stdio.h>
int main(){
int m=1,n=2;
int a;
a=(m+n,m-n);
printf("a的值為%d,表達式的值為%d\n",a,a=(m+n,m-n));
a=m+n,m-n;
printf("a的值為%d,表達式的值為%d\n",a,(a=m+n,m-n));
a=m+n,m-n+a;
printf("a的值為%d,表達式的值為%d\n",a,(a=m+n,m-n+a));
printf("");
return 0;
}
運作結果
a的值為-1,表達式的值為-1
a的值為3,表達式的值為-1
a的值為3,表達式的值為2
4.強制類型轉換
對變量進行強制類型轉換時,隻能得到一個中間值,并不改變該變量原有的類型。
5.自增運算和自減運算(++/-- 同java)
自增運算符和自減運算符是c語言特有的單目運算符,他們隻能和一個單獨的變量組成表達式。
x++和++x的相同之處是:單獨作為一個表達式語句被使用時,無論執行了哪一種表達式,執行結束後x的值都加1.
x++和++x的不同之處是:當他們出現在其他表達式中時,也就是說作為其他表達式的一部分時,兩個表達式的結果是不一樣的。++x的值等于原值+1,x++的值等于x的原值。
6.位運算
#include<stdio.h>
// 運作結果如下:(分别為取反,與,或,異或,右移與左移)
int main(){
unsigned int A=0xb3,B=0x9a;
printf("A=%x\n", A);
printf("B=%x\n", B);
printf("~A=%x\n",~A);
printf("A&B=%x\n",A&B);
printf("A|B=%x\n",A|B);
printf("A^B=%x\n",A^B);
A=27;B=28;
printf("A<<1=%u\n",A<<1);
printf("A>>1=%u\n",B>>1);
return 0;
}
運作結果:
A=b3
B=9a
~A=ffffff4c
A&B=92
A|B=bb
A^B=29
A<<1=54
A>>1=14
資料類型
7.有符号數和無符号數的差別
有符号,最高位是符号位,1代表負數,0代表正數
無符号,最高位不是符号位,是數的一部分,無符号不可能是負數
8.char資料類型範圍
char 占一個位元組
有符号:-128~127
無符号:0~255
9.數值越界
char a = 127 + 2;
列印a的值為-127,從補碼的角度分析
127+2 = 129 ,129轉換為2進制是10000001,計算機是以補碼存儲資料的,是以這個2進制數是129的補碼
補碼:1000 0001
反碼:1111 1110
原碼:1111 1111(最高位是符号為) = -127
unsigned char b = 255 + 2;
257轉換位二進制0001 0000 0001
因為是無符号數,是以隻取後8位,得到的是1
10.sizeof
sizeof不是函數,隻是一個運算符,是以不需要包含任何頭檔案,它的功能是計算一個資料類型的大小,機關位位元組
sizeof的傳回值位size_t
size_t類型在32位作業系統下是unsigned int,是一個無符号整數
11.整型變量輸入輸出
short 短整型 占2個位元組
int 整型 占4個位元組
long 長整形 windows 占4個位元組 Linux占4個位元組(32位),8個
位元組(64位)
long long 8個位元組
整型資料在記憶體中占用的位元組數與所選的作業系統有關,雖然C語
言标準中沒有明确規定整型資料的長度,但是long類型整數的長度
不能短于int,short類型的長度不能長于int
當一個小的資料類型指派給一個大的資料類型,不會出錯,因為編
譯器會自動轉換,但是當一個大的資料類型指派給一個小的資料類
型,可能會丢失高位
列印格式 含義
%d 輸出一個有符号的十進制int類型
%o(字母o) 輸出8進制int類型
%x 輸出16進制int類型,字母小寫
%X 輸出16進制int類型,字母大寫
%u 輸出10進制無符号數
12.字元型
字元變量實際上并不是把該字元本身放到變量的記憶體單元中去,而
是将該字元對應的ADCII編碼放到變量的存儲單元中,char的本質就
是一個位元組大小的整型,記憶體中沒有字元,隻有數字,一個數字對
應一個字元,這種規則就是ASCII,使用字元或數字給字元變量指派
是一樣的
char ch = 'a' char ch = 97 等價
小寫字母比大小字母的位元組大32
小寫轉大寫 'a'-32
大寫轉小寫 'A'+32
13.轉義字元
char a = 'abc' //原則上''内部隻有一個字元,轉移字元除外,這種寫法不合适,會有警報
轉義字元,由反斜杠組成的多個字元"\"
14.浮點型:float double
實型變量也稱為浮點型變量,存儲小數數值
單精度浮點數float: 占用空間4個位元組,有效存儲7位
雙精度浮點型:占用8個位元組,有效存儲15~16
預設是double,加上f結尾是float,3.14是double類型,3.14f是float
15.類型限定符
extern : 聲明一個變量,extern生命的變量沒有建立存儲空間 extern int a
const : 定義一個常量,值不能修改
volatile :放置編譯器優化代碼
register : 定義寄存器變量,提高效率,register是建議型的指令,而
不是指令型的指令,如果CPU由空閑寄存器,那麼register就生效,
如果沒有空閑寄存器,就無效