回覆列表
  • 1 # 你小子真帥188

    1. cout使用的三種方式

    前提:如果程式中想使用 cout ,需要包含庫 < iostream > 。因為 coutstd 庫中的一個類的物件,所以使用的方法是 std::cout ,如下:

    如果程式中頻繁出現 cout ,這樣的操作極為不便,所以可以使用下面兩種方法來解決。

    方法一 :使用 std 名稱空間

    這樣,後面程式中可以直接使用 cout ,而且std中的其他名字也可以直接使用,如 cinendl 等。

    方法二 :使用 std 名稱空間中的 cout

    這樣,後面程式中只可以直接使用 cout ,而 std 中的其他名字不可以可以直接使用。

    2. cout和i/i++/++i的組合使用

    i++++i 是有著不同的含義,和 cout 組合使用也會得到不同的結果,下面給出一段程式碼:

    這段程式碼的結果是多少呢?A.23345B.22335C.54535D.53525…我們不妨先理解一下 cout 輸出控制檯的過程。看下面這幅圖:

    根據表示式來看, endl 會作為一個可以供 cout 接收的物件往前傳,而 ++iendl 結合起來作為一個可以供 cout 接收的物件往前傳,依次遞推下去。物理實現上需要一個棧來儲存可以供 cout 接收的物件,然後從右向左放到這個棧裡,然後依次彈出輸出在螢幕上。其中, i++i 會在棧裡面儲存 i 的引用,而 i++ 會在棧裡面儲存數字,過程如下:

    第一步:將 endl 壓入棧中, i 值不變;第二步:將 i 的引用壓入棧中, i 的值加 1 變成 2(因為是 ++i );第三步:將 2 壓入棧中, i 的值加 1 變成 3(因為是 i++ );第四步:將 i 的引用壓入棧中, i 的值不變(因為是 i );第五步:將 3 壓入棧中, i 的值加 1 變成 4(因為是 i++ );第六步:將 i 的引用壓入棧中, i 的值加 1 變成 5(因為是 ++i );第七步:將棧裡的資料依次彈出,即可得到 53525 。(因為i的值是 5 ,所以所有 i 的引用都是 5

    3. 以不同進位制輸出數字

    有時候,我們需要以不同的進位制來輸出數字,而預設輸出是十進位制,其他進位制輸出方法如下:

    輸出結果如下:

    其中,oct 是八進位制輸出, dec 是十進位制(效果和預設一樣), hex 是十六進位制輸出(字母預設是小寫字母)。這兩個也包含在 std 中,即其全稱分別是 std::octstd::decstd::hex ,這三個控制符包含在庫 < iostream > 中。setbase(n) 表示以 n 進位制顯示,包含在庫 < iomanip > 中,n 只能取 8, 10, 16 三個值。setiosflags(ios::uppercase) 表示將字母大寫輸出,包含在庫 < iomanip > 中。以上均包含在std 名稱空間中。

    4. 輸出數字位數的控制

    前提:包含庫 < iomanip > ,這個庫包含了對輸入輸出的控制。

    輸出結果如下:

    可以看出,C++預設浮點數輸出有效位數是 6 位(若前面整數位數大於 6 位,使用科學計數法輸出),而透過以下幾種方式可以更改輸出精度:1.使用 setprecision(n) 即可設定浮點數輸出的有效位數(若前面整數位數大於 n 位,使用科學計數法輸出)2.使用 setiosflags(ios::fixed)fixed,表示對小數點後面數字的輸出精度進行控制所以,和 setprecision(n) 結合使用即可設定浮點數小數點後面數字的輸出精度,位數不足的補零以上均採用 “四捨五入” 的方法控制精度,三個控制符均包含在 std 名稱空間中。

    5. 強制顯示小數點和正負號

    輸出結果如下:

    顯示預設 6 位有效位數,兩個控制符均包含在庫 < iomanip > 中,std 名稱空間中。

    6. 設定寬度和對齊方式

    輸出結果如下:

    輸出結果預設顯示右對齊。三個控制符均包含在庫 < iomanip > 中,std 名稱空間中。

    7. 設定填充字元

    輸出結果如下:

    控制符包含在庫 < iomanip > 中,std 名稱空間中。

    8. iomanip庫用法總結

    < iomanip > 庫封裝了很多對輸入輸出流的操作,常見用法總結如下:

    控制符作用setbase(n)以n進位制方式輸出(n=8,10,16)setfill(ch)設定字元填充,ch可以是字元常量或字元變數setprecision(n)設定輸出有效位數為n位setw(n)設定字元寬度為n位,只對後一個有影響setiosflags(ios::uppercase)以大寫字母顯示setiosflags(ios::fixed)實現對小數點後的數字的控制setiosflags(ios::scientific)以科學計數法顯示setiosflags(ios::showpoint)強制顯示小數點setiosflags(ios::showpos)強制顯示正號setiosflags(ios::left)設定輸出

  • 中秋節和大豐收的關聯?
  • 唵嘛呢唄咪吽是什麼意思?