本節書摘來自異步社區出版社《C和C++代碼精粹》一書中的第1章第1.7節,作者: 【美】Chuck Allison,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
1.7 類型安全I/O
C和C++代碼精粹
當然每個C程序員都曾經使用過printf的錯誤格式描述符號。對printf來說沒有辦法檢查所傳遞的數據項是否與字符串格式匹配。
程序清單1.4 一個說明引用調用的交換函數
// swap.cpp
#include <stdio.h> void swap(int &, int &); main()
{int i = 1, j = 2;swap(i,j);printf("i == %d, j == %d\n", i, j);
} void swap(int &x, int &y)
{int temp = x;x = y;y = temp;
} //輸出:
i == 2, j == 1
做如下事情的頻率如何?僅僅是在運行時發現問題?
double d;
…
printf("%d\n",d);/*嘿!本應該用%f*/
換句話說,C++流庫使用一個對象的類型來決定正確的格式:
double d;
…
cout<<d<<endl;//不會失敗的
表達式cout<
double x = 1.5, y = 2.5; //從現在起保留小數點后兩位
cout.precision(2); //保持小數點后的0
cout.setf(ios::showpoint);
cout<<x<<'\n'; //打印1.50
cout<<y<<'\n'; //打印2.50
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。