一迫肖、常量和變量:
常量的定義:const int a = 10;
常量:
整型常量
實型常量
字符型常量
字符串常量
變量:
整型變量
實型變量
字符型變量
字符串變量
變量定義:
- 先聲明,后賦值
int a;
a = 10;
2)邊聲明,邊賦值
int a = 10;
變量的屬性:
1述呐、變量的類型
說明變量存放什么類型的數(shù)據(jù)
2、變量的名稱,變量名
根據(jù)變量名來存取變量的值
3、變量的值
變量所占的內(nèi)存中實際存放的值
4零聚、變量的地址
如何獲取變量的地址?
int a = 10;
&a // 獲取到了變量啊的地址
二眶蕉、注釋的使用
- // 單行注釋
- /*
多行注釋
*/
注意點: 多行注釋的嵌套,以/* 開始, 以*/結(jié)束勋乾。如果嵌套,會有問題。因此多行注釋不能嵌套使用枕磁。
三渡蜻、printf函數(shù),scanf函數(shù)。
1)计济、printf(“格式控制字符串”,輸出項列表);
%d 十進制整型
%lu 十進制無符號長整型
%f 浮點類型
%c 輸出字符
%s 輸出字符串
注意點
%f——》保留兩位小數(shù),%.2f
%5d 右對齊
%-5d 左對齊 ,如果位數(shù)不夠,用空格來頂位茸苇。
%05d 右對齊,如果位數(shù)不夠,以0來頂位。
輸出項列表中包含格式控制字符串中要輸出的對應類型的變量沦寂。
(類型要和格式控制一致,位置一一對應)
2)学密、scanf(“格式控制字符串”,輸入項列表);
輸入項列表使用的是變量的地址。
int a ;
scanf("%d",&a);
注意:
連續(xù)使用scanf函數(shù)做輸入,會出現(xiàn)跳過用戶輸入,直接執(zhí)行的問題传藏。
原因:
scanf函數(shù)的緩沖區(qū)腻暮。
解決:
清除緩沖區(qū)里的內(nèi)容。吸收'\n'毯侦。
getchar()
scanf();
getchar();
四哭靖、關(guān)鍵字和標示符
關(guān)鍵字:
就C語言已經(jīng)占用的單詞,我們不可以再重新定義。我們自己定義的標示符,不能和關(guān)鍵字重名侈离。
表示符的命名規(guī)則:
1试幽、只能能以字母、數(shù)字卦碾、下劃線铺坞、美元符號命名
2、不能數(shù)字開頭
3蔗坯、大小寫區(qū)分
4康震、不能和關(guān)鍵字重名
五、運算符
算數(shù)運算符:+-*/ % 左結(jié)合性
賦值運算符 := 結(jié)合性:右結(jié)合性
復合賦值運算符 += -= *= /= .... x += 1;相當于 x = x+1;
關(guān)系運算符 比較大小的,>, >= ,< ,<= 優(yōu)先級高于 ,== ,!= ,左結(jié)合性
sizeof運算符 看在當前編譯環(huán)境下,某個類型在內(nèi)存中占幾個字節(jié)宾濒。
sizeof(常量)腿短、sizeof(變量)、sizeof(數(shù)據(jù)類型)绘梦。
自增橘忱、自減運算符 ++ ,--。 如果++a(前綴),先加一,在使用; a++(后綴) ,先使用,在加一卸奉。邏輯運算符 && ,||, !.優(yōu)先級:!> && > ||
&& 都真才真
|| 一真就真
! 真假顛倒
邏輯短路:
與短路: 表達式1 && 表達式2,短路條件:表達式1的值:假,就不去計算表達式2的值了钝诚。
或短路: 表達式1 || 表達式2, 短路條件:表達式1的值 : 真,就不去計算表達式2的值了。
逗號運算符
,優(yōu)先級最低榄棵。
結(jié)合性:左結(jié)合性,(a+b,a+c,d+a); 從左往右計算凝颇。
逗號表達式返回值:是最右邊的表達式的值潘拱。
位運算符
& | ~,^ >> ,<<
六、進制轉(zhuǎn)換
10-2 互轉(zhuǎn)
10 -8,10 -16
x進制 基:X,從右數(shù)第n位:n;第n位的位權(quán):x^(n-1)拧略。
x進制轉(zhuǎn)換成10進制的萬能公式:
x進制數(shù)是:abcd,從有數(shù)的每一位上的數(shù)字乘以該位的位權(quán)后的值相加即等于十進制的值芦岂。
十進制值 = dx^0+cx1+b*x2+ax^3
2->10 :
16 8 4 2 1對應的位權(quán)
1 0 0 1 1=11 + 12 + 04 +08+116=18
2->16: 四合一
16->2 :一拆四
2-》 8 : 三合一
8-》2:一拆三
七、位運算
位運算符:
&(按位與,兩位同時為一,結(jié)果才是一) ,|(按位或,兩位有一個是一結(jié)果就是1),(安位異或,兩位不相同的時候結(jié)果才為1),~(0->1,1->0,符號位跟著一起變,和求反碼不一樣),<<(左移,向左移動n位,相當于乘以2n,有可能改變數(shù)值的正負,不夠補0),>>(右移,向右移動n位,相當除以2^n,不夠的補符號位,它不會改變一個數(shù)的正負,)
八垫蛆、三目運算符:禽最、
一般格式:表達式1?表達式2 : 表達式3
執(zhí)行過程: 先求表達式1的值,如果是真:計算表達式2,否則計算表達式3.
三目運算符的嵌套:能不用就不用。
九袱饭、結(jié)果化編程思想
告訴我們?nèi)魏喂δ艿某绦蚨伎梢杂?順序結(jié)構(gòu)川无、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種最基本的程序控制結(jié)構(gòu)來構(gòu)成。不使用goto,目的:提高程序的易讀性,提高開發(fā)效率虑乖。
十懦趋、三種節(jié)本的程序控制結(jié)構(gòu):
順序結(jié)構(gòu):按照代碼書寫的順序來順序執(zhí)行。
選擇結(jié)構(gòu):按照某個條件是否成立來選擇執(zhí)行不同的代碼塊决左。也叫分支結(jié)構(gòu)愕够。
if 語句
switch語句
循環(huán)結(jié)構(gòu):重復執(zhí)行某些功能的代碼。
while循環(huán)
do佛猛。。坠狡。while循環(huán)語句
for循環(huán)
十一继找、選擇結(jié)構(gòu)的if語句:
1)if語句的一半形式:
單分支
if(a >0 ){
// a是正數(shù)
}
雙分支
if(a > 0){
} else{
// a 不是一個正數(shù)
}
多分支
if(a > 0){
// a 正數(shù)
} else if(a < 0){
// a負數(shù)
}else{
// a = 0
}
if 語句只能選擇其中的一條邏輯分支,每個分支之間時互斥的。
2)if語句的嵌套
if(a > 0){
}else{// a <= 0
if( a < 0){
// a 負數(shù)
}else{
// a = 0
}
}
3)if語句使用的注意事項:
c語言的邏輯判斷:在對一個結(jié)果進行邏輯判斷的時候,認為0 代表假,非0代表真逃沿。
c語言進行邏輯結(jié)果返回:0 代表假,1代表真婴渡。
if(表達式),可以放任何的表達式。if(1) //永真
if(a > 0) printf("---"); // if語句后面如果沒有{},那么if的作用域就只有它后面的那一行代碼凯亮。
if(a > 0) int b = 9; // 編譯器會報錯边臼。如果想通過編譯,加上{}
if(a > 0) {int b = 9;}// 編譯通過。
if(a > 0){
int b = 9;
}
printf("b= %d",b);// 編譯不通過,報錯:沒有聲明的變量標示符b假消。
十二柠并、switch語句
switch一般格式:
switch (表達式1){
case 表達式2:
// 功能代碼;
break;
default:
break;
}
執(zhí)行流程:
先計算表達式1的值,然后比較表達式1的值和表達式2的值是否相等,如果相等,進入該條case 語句,并且向下順序執(zhí)行代碼,直到遇到break,結(jié)束switch語句。
switch語句注意點:
1)swtich語句后面的表達式1,允許的值:int類型的變量,常量或著結(jié)果為int類型的表達式;可以向上轉(zhuǎn)型為int類型的變量,常量或表達式富拗。(char ,short,枚舉類型)2)case語句可以任意多條;3)case語句后面可以加{},也可以不加,執(zhí)行效果一樣臼予。4)default位置:可以在switch{}內(nèi)部的任意位置。5)break語句可以省略啃沪。
case語句的注意點:1)case 語句的格式,空格和冒號都不可省略粘拾。2)case語句后面表達式2的值:整型常量:int類型。也可以是一個常量表達式(3+3),其他類型的常量(可以向上轉(zhuǎn)型為int類型的)创千。(char ,short,枚舉)缰雇。3)case 語句的作用域:直到遇到break 關(guān)鍵字入偷。4)case 后面不能在第一行代碼定義一個變量,編譯不通過;如果說非要在case語句的代碼塊中定義一個變量,1加上{};2把變量的定義,不要放在第一行。switch(表達式){
case 1:int a = 1;// 放在第一行定義,編譯不通過,printf("");int b = 2;break;
case 2:printf("b = %d",b );
break;default:
break;
分區(qū) 第四天 的第 2 頁
}
break;
5)編譯器的bug,使用了前面沒有滿足條件的分支中定義的變量,但是沒有使用其中定義的變量值,而是一個垃圾值械哟。
switch(2){case 1:
printf("");int b = 2;break;
case 2:printf("b = %d",b );
break;default:
break;
}6)default語句如果在最后,可以省略break;如果不在最后,break不能隨變省略,否則會造成邏輯錯誤疏之。
8、if和siwtch語句的選擇結(jié)論:
if的判斷比較靈活,如果判斷范圍的話用if簡單戒良。
switch只能判斷值是否相等,但是它能夠?qū)⒍鄺l邏輯分支通過case語句的穿透執(zhí)行來合并執(zhí)行体捏。9、if和switch的轉(zhuǎn)換
通過整除的方式,將分數(shù)范圍轉(zhuǎn)換成數(shù)值糯崎。