3.1轉換說明
%m.pX ,m和p都是可選項,且必為整型,m代表最小字段寬度,如果要列印的比m個字元小,則值在字元段為右對齊,前面用空格補位。當然,-m就是左對齊,另外列印的比m個字元多,那什麼也不會改變。p代表轉換精度分為d,f,e,g。後三者均是顯示浮點數,e為科學計數法,g都行,顯示比較智能根據數的大小決定。

3.1scanf
scanf與printf一樣,編譯器是不對輸入數量進行檢查的。注意是否有&,當然如果有些輸入不當的情況将極有可能出現程式崩潰的問題,一般我們采用全部以字元形式讀取,然後在轉别的類型。scanf回忽略最後一個換行符,是以下一次讀到的第一個就是換行符。scanf當遇到的字元為非目前項内容時會把此字元放回原處。
scanf格式字元串中,一個空白字元或空白轉義序列都可以比對任意多個空白字元,換行符,空格。
Q&A
1.%i : printf以十進制輸出,與%d一緻,讀入時可以讀入八進制和16進制的數。
2.%%: 雙百分号代表%字元。
4.表達式(操作數+運算符)
對于/和%運算符,操作數有一個為負數時,/取整方向不固定與具體實作有關。%則結果完全未知,可正可負。這種與具體實作的行為,恰恰是C語言高效率的展現,這意味這要與硬體行為相比對。大家應避免這種未定義行為。
左值:存儲在計算機記憶體中的對象,比如變量,而不是常量或表達式。
v += e 不等價 v = v + e
需要記住的是自增/自減運算符是分前字尾的,字首左結合,優先級高于一進制操作符+/-,字尾右結合與其相同。不在子表達式使用指派運算符,而是采用一串分離的指派表達式。
fmod可以針對浮點數求餘數。
/*int 逆序*/
int Reverse(unsigned int num, unsigned int reversenum = ) {
return (num == ) ? reversenum : Revert(num / , reversenum * + num % );
5.選擇語句
/*級聯式if語句*/
/*不用縮進,告訴讀者這隻是單純的一系列判斷
也防止判定過多産生過量縮進*/
if()
語句
else if()
語句
else
語句
switch()
{
case : case : case :
printf("!");
break;
case :
printf("!");
break;
default:
printf("!");
break;
}
return (i > j ? i : j);
5.循環
do while語句一般得帶個大括号,否則很容易以為是while語句。