
平時很少用的幾個點:
(資料圖片僅供參考)
%ld 表示長整型 long int
%%---輸出%
%o---輸出八進制
%o和%#o的區別:
%#o更讓我們清楚八進制的形式
%x和%#x打印十六進制也是如此、
%md是我們常見的轉換描述。默認右對齊,前面加上-負號就是左對齊,我們在打印99乘法表時,-2d就是表示左對齊,每個數字占2個寬度
%m.nf不太常見,m表示占幾個寬度,n表示小數點后位數(值得注意的是,若小數位數比規定小數點后位數長,需要截斷,按照四舍五入!)這也是C語言唯一一個需要四舍五入的地方!
tip:小數點算一位!
總結:看.后面的數!
經典例題:
a、關系表達式的數值只能是1(真)或0(假)
如果9>8這個關系表達式是真的,所以9>8這個表達式的數值就是1
b、考試易錯題:
關系表達式的優先級是從左到右,1<0為假,返回值就是0,而0<2為真,返回值就是1,所以總表達式輸出結果就是1!
表達式1?表達式2:表達式3
考試口訣:真前假后。
當表達式1的值是非0時,采用表達式2,當表達式1的值就是0時,采用表達式3
break是打破的意思,(破了整個循環),所以看見break就要退出整個一層循環。
continue是繼續的意思(繼續循環),但是要結束本次循環,就是循環體內部的語句不再執行,跳到循環開始,進行新一輪的循環。
4、不停的輸入,直到輸入#停止輸入
while((x=getchar())!="#")
5、經典考題
首先明確while()括號里面不為0就是真,為0就是假,跳出循環。
解題思路:
第一個先--,k為0,跳出循環,所以只減了一次;第二個先使用,發現等于一,需要再次--,一共經歷了兩次--,最后結果就是-1
a、
*p++和(*p)++的區別
前者本質是地址++,后者p的本身的值會++
*p++,意味p指向首元素地址,而*p++本質是地址++,所以就變成第二個元素的值,---3
(*P)++本質是值++,所以1++就變成2
b、
p和*p的區別
p的本質是地址,而*p表示地址里面的值!
c、
二級指針
解答:把*q看成一個指針整體,所以*q就表示p的地址,而**q才表示p地址里面存放的值7!
值得注意二級指針只能存放一級指針的地址,不能存放變量的地址!