這更多的是好奇心的問題,但是有誰知道C++中負的精度值是如何處理的?例如:ostream中的負精度值
double pi = 3.14159265;
cout.precision(-10);
cout.setf(ios::fixed, ios::floatfield);
cout << pi << endl;
我已經試過了這一點,並使用GCC,似乎精度值將被忽略,但我很好奇,如果有在這種情況下會發生什麼一些正式下線。
這更多的是好奇心的問題,但是有誰知道C++中負的精度值是如何處理的?例如:ostream中的負精度值
double pi = 3.14159265;
cout.precision(-10);
cout.setf(ios::fixed, ios::floatfield);
cout << pi << endl;
我已經試過了這一點,並使用GCC,似乎精度值將被忽略,但我很好奇,如果有在這種情況下會發生什麼一些正式下線。
奇怪的是(錯誤地說,恕我直言)C++標準指定了一個帶符號的類型(streamsize)作爲精度參數,所以它不會被轉換爲大數。但是,如果有的話,該標準沒有提及負數可能意味着什麼。
我無法在C++03和C++0x (N3092)的草稿中找不到此行爲的任何規範。然而,C89標準說
7.19.6.1 fprintf函數
負精度參數取爲如果精度被刪去。
我期望C++ std :: ostream行爲與C I/O printf一致。 fprintf及相關功能。
使用Visual C++ 10.0和GCC 4.4.1進行快速測試表明它是這種方式,負精度表示精度省略。並且,精度省略指缺省值,它是地方如表中27.5.4.1 basic_ios構造指定125