2013-08-04 13 views
0

源代碼中包含以下內容。在cout中截斷的C++預處理器值

#define VAR 3.0 

,但是當我試圖把它打印出來,

cout << VAR; 

我得到的值

3 

當我通過一個預處理標誌-DVAR同樣的事情發生。我已檢查輸出與

g++ -E -P 

和正確的值正在被預處理器替換但可執行輸出正在被截斷。

+3

它不被截斷,它是圓的。如果您想將其作爲_string_輸出,請將其定義爲一個。 –

+2

是什麼讓你認爲它與預處理器有什麼關係? – juanchopanza

+0

它甚至不是一種類型轉換。 cout只是試圖變得聰明,並且看到該值沒有任何分數,因此打印出整數部分。如果它是'#define VAR 3.1415926535',則輸出將是'3.14159' –

回答

6

你可以嘗試做cout << 3.0;並同時獲得輸出3 它不是做它的預處理器,它只是試圖輸出浮動,這是浮動的打印方式

如果你定義:

#define VAR "3.0" 

你會得到想要的輸出