1.類型轉(zhuǎn)化
(1)隱式轉(zhuǎn)化:
當(dāng)賦值號(hào)兩邊類型不同時(shí),自動(dòng)轉(zhuǎn)化為精度較高的類型
5/3 = 1.00000
9.120000/5 = 1.824000
(2)顯式轉(zhuǎn)化;
強(qiáng)制類型轉(zhuǎn)化,并不改變變量的類型,只臨時(shí)做一次類型轉(zhuǎn)化
float_f = (float)int_t/int_t1
2.位運(yùn)算符
1. &:位與
|:位或
~:非(取反)
^:異或
<<:左移
>>:右移
(1)二進(jìn)制數(shù) :由0和1組成
2^0 | 2^1 | 2^2 | 2^3 | 2^4 | 2^5 | 2^6 | 2^7 | 2^8 | 2^9 |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 |
101010= 0 + 2^1 + 0 + 2^3 + 0 +2^5
(2)八進(jìn)制數(shù):由0~7組成的,八進(jìn)制數(shù)開頭是數(shù)字0,以區(qū)分八進(jìn)制數(shù)
0345 0123 0765 04321
(3)十六進(jìn)制數(shù):由數(shù)字0-9和數(shù)字af或者AF組成,并且以0x或者0X開頭
0x123 0xab34 0XAB345 0XFFF
(4)進(jìn)制數(shù)
二進(jìn)制數(shù):1111
十進(jìn)制數(shù):1111----->8+4+2+1=15
111----->4+2+1=7
二進(jìn)制 | 十進(jìn)制 | 八進(jìn)制 | 十六進(jìn)制 |
---|---|---|---|
0000 | 0 | 0 | 0 |
0001 | 1 | 1 | 1 |
0010 | 2 | 2 | 2 |
0011 | 3 | 3 | 3 |
0100 | 4 | 4 | 4 |
0101 | 5 | 5 | 5 |
0110 | 6 | 6 | 6 |
0111 | 7 | 7 | 7 |
1000 | 8 | 8 | |
1001 | 9 | 9 | |
1010 | 10 | a/A | |
1011 | 11 | b/B | |
1100 | 12 | c/C | |
1101 | 13 | d/D | |
1111 | 15 | f/F |
(5)
10101011:171,0253,0xab(0XAB)
0123:001 010 011
0XA45:1010 0100 0101
(6)位操作
&:位與
將十進(jìn)制數(shù),八進(jìn)制數(shù),十六進(jìn)制數(shù)轉(zhuǎn)化為對(duì)應(yīng)二進(jìn)制數(shù),進(jìn)行位與運(yùn)算!!!
4&3 = (0100 &0011) = 0000
12&7 =(1100 &0111) = 0100
即對(duì)應(yīng)位同時(shí)為1時(shí),結(jié)果為1,否則為0!!!
|:位或
4|3 = (0100 |0011) =7
023|5 = (0010 0011 | 0101) = 10111
13|9 = (1101 |0101) = 1101=13
即:對(duì)應(yīng)位只要有1,則為1;同時(shí)為0,才為0!!
~:非(取反)
~23: ~(0001 0111)
-------------
23:0001 1000
補(bǔ)碼1110 1000
反碼1110 0111
原碼1001 1000
計(jì)算機(jī)是補(bǔ)碼存儲(chǔ),原碼輸出!!!!
原碼:正數(shù)的原碼是是本身
反碼:符號(hào)位不變,其他位按位取反
補(bǔ)碼:負(fù)數(shù)的補(bǔ)碼是其正數(shù)的原碼取反加1.
^:異或
4^7 =
0100
^0111
-----
0011
3
4^3 =
0100
^0011
----
0111
7
<<:左移
8<<2
1000
<<2
100000
32
4<<4
0100
<<4
100000
32
即轉(zhuǎn)化為二進(jìn)制,然后左移
然后 >>:右移
8>>2
1000
>>2
0010
2
4>>4
0100
0000.01
0
即轉(zhuǎn)化為二進(jìn)制,然后右移
3.賦值操作符:=
+=
num += i;----> -= *= /= %= &= |=
4.邏輯運(yùn)算符和條件運(yùn)算符
(1)
&&:邏輯與
表達(dá)式1&&表達(dá)式2
當(dāng)表達(dá)式1和表達(dá)式2同時(shí)為真,結(jié)果為真
||:邏輯或
表達(dá)式1||表達(dá)式2
表達(dá)式1和表達(dá)式2只要有一個(gè)為真,結(jié)果為真
注意:只要有一個(gè)為真,即可!
!:非
!表達(dá)式
若表達(dá)式為真,作為結(jié)果為假
反之,則真
(2)條件運(yùn)算符
?:
表達(dá)式1?表達(dá)式2:表達(dá)式3
若表達(dá)式1為真,則執(zhí)行表達(dá)式2,否則執(zhí)行表達(dá)式3
a>b?a:b
a,b,c---->max
a>b?(a>c?a:b):(b>c?b:c)
5.運(yùn)算符的優(yōu)先級(jí)
括號(hào)成員第一,全體單目第二,乘除余三,加減四;
位移五,關(guān)系六,等與不等排第七
位與,異或和位或八九十
邏輯或和與十二和十一
條件高于賦值,逗號(hào)運(yùn)算最低!
二.C語言的三大結(jié)構(gòu)
順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
1.分支結(jié)構(gòu)
(1)if(表達(dá)式)
{.....}
表達(dá)式為真則執(zhí)行{}里的語句;
若為假,則不執(zhí)行{}里的語句;
(2)if.....else
(3)if
else if
else if
(4)if的嵌套使用
練習(xí):
使用if的注意事項(xiàng)
80 <num <90 //錯(cuò)誤
num>80 && num<=90 //ok
if條件句后面只有一條語句時(shí),可以不加{};但此語句不能是變量定義語句。
例子:
if(1)
printf("hello\n") ;
printf("world!\n") ;
說明:if的有效語句只有:printf("");
在if(1)
{
printf("hello\n");
int num = 0;
printf("num = %d\n,"num);
}
printf("num = %d\n",num); //錯(cuò)誤
2.switch....case
(1) switch(option)
{
case option1;
break;
case option2;
break;
case option3;
break;
default;
break;
}
根據(jù)option的值選擇性執(zhí)行case語句,若沒有與值對(duì)應(yīng)的case語句,則執(zhí)行default語句!
(2)注意事項(xiàng):
default語句可以放在switch{}里面的任意位置;
case語句后的{},可以省略不寫,當(dāng)case后的之后的執(zhí)行語句超過三條,則建議加{}。
(3)case語句中break視情況而定是否寫;
若case語句中無break。則順次執(zhí)行所有的case語句
直到把所有的case語句執(zhí)行完畢,退出switch!*/
三、循環(huán)結(jié)構(gòu)
while() do{}while() for(;;)
1.while (表達(dá)式)
{
//執(zhí)行語句
}
先判斷條件是否滿足執(zhí)行條件,滿足則執(zhí)行循環(huán)體,
不滿足則退出循環(huán)!
若滿足條件,則執(zhí)行循環(huán)體 ,每執(zhí)行一次循環(huán)體
進(jìn)行一次條件判斷
先判斷后執(zhí)行
2.break/continue
break:跳出當(dāng)前循環(huán)
continue:跳過本次循環(huán),進(jìn)行下一次循環(huán)
do{}while()
do
{
//循環(huán)體
}while(表達(dá)式);
先執(zhí)行后判斷
3.for(;;)
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
//循環(huán)體;
}
表達(dá)式1:
循環(huán)條件初始
表達(dá)式2:
循環(huán)結(jié)束條件或者循環(huán)執(zhí)行條件
表達(dá)式3:
循環(huán)步長(zhǎng)或者變量值的更新
主:表達(dá)式1,2,3可以任意省略,或全部省略
但是,“;;”不能省略!!!
今天開始進(jìn)行編程了,學(xué)習(xí)的東西都有大概的印象,需要用課后的時(shí)間多加練習(xí),熟悉掌握它們。加油!!!