c語言基礎與提高
基本資料型別的位元組
整型 int 4個位元組
單精度浮點型float 4個位元組
雙精度浮點型 double 8個位元組
字元型char 1個位元組
長整型 long 4個位元組 8個位元組(64位)
短整型 short 2個位元組
sizeof() 不是函式,是乙個運算子
例1:下面這段**的結果是什麼?
int main()
chara[1000];
inti;
for(i= 0; i < 1000; i++)
a[i]= -1-i;
printf(「%d\n」,strlen(a));
return0;
分析:char 的位元組長度為8,最小負數為 1000 0000,為-128
a[0]=-1, a[1]=-2, … a[127]=-128
a[128]=-129,超出了char所能表示的最小負數,所以a[128] != -129,
-129的原碼:1 1000 0001,假設能儲存於記憶體中,則以補碼儲存。
-129的補碼:1 0111 1111,事實上最高位的1無法儲存,故記憶體中儲存的資料為:
0111 1111,即127的補碼,故a[128] = 127。
a[129]=-130,同理,輸出的實際值 a[129]=126
故有a[255]=0.
而函式strlen()遇到字元『\0』就會停止,輸出計數的值為255。(從i=0,計數到i=254,共計255個)
例2:inti = -20;
unsignedint j = 10;
i+ j = ?
分析:i是有符號整型,j是無符號整型,
i中-20的原碼:00000000 00000000 00000000 10010100
i中-20的補碼:11111111 11111111 11111111 11101100
j中10的原碼:00000000 00000000 00000000 00001010
j中10的補碼:00000000 00000000 00000000 00001010
兩者補碼之和:11111111 11111111 11111111 11110110
值為:4294967286
const 修飾乙個唯讀變數,不能通過變數的值去修改對應記憶體中的資料,但是可以通過位址(指標)去修改。
volatile 防止編譯時被優化,針對硬體程式設計時。
字串預設含有\0
字串用「」包住
「a」也是乙個字串,等價於「a\0」
強制型別轉換 :(型別)表示式
條件運算子 max = (a > b) ? a : b;
運算子的優先順序可以使用()來解決。
逗號運算子:連線兩個表示式
自增、自減運算
例:
int a =4
(1)、a+=a++;
(2)、a+=++a;
(3)、++a+=a;
(4)、++a+=a++;
(5)、++a+=++a;
答:(1) a = a + a++ = 8
a++;
a=9;
(2) a = a + ++a = 10
(3) ++a;
a = a + a = 10;
(4) ++a;
a = a + a =10
a++;
a=11
(5) 12
switch語句
例:簡單的計算器
1#include
2 3int main()
4 20
21 return 0;
22 }
課堂筆記 C語言基礎與提高2
陣列 int a 10 表示定義了乙個整型陣列,陣列名為a,有10個元素。a 0 a 9 從低位址到高位址。一維陣列的初始化 int a 4 也可以給部分賦值,只要對其中乙個元素賦過值,其他未賦值的元素為0,如果都不賦值,則各元素的值為隨機值。a 和 a,a即是陣列名也是位址 a 與 a的值相同,意...
課堂筆記 C語言基礎與提高3
指標 1 定義與作用 指標是變數的一種,裡面是位址,通過位址找到要找的資料。單元的位址就是指標的內容 2 指標運算子 是取位址的運算子,是表示指標運算子 例 int p1,a p1 a p1 3 1.定義時表示的是指標變數。2.使用時表示取值。例 利用指標運算實現strcpy include inc...
C語言基礎與提高1(一)
一 基本資料型別 1.整型 int 整數,4個位元組,在tc環境中為2個位元組 signed int 最小值為 10000000 00000000 00000000 00000000 2.單精度實型float 單精度浮點數,4個位元組,精度6位 3。雙精度實型double 雙精度浮點數,8個位元組,...