2013-11-27 75 views
-3

我試圖編譯一個64位計算機上下面的程序編譯C++與控制檯:問題在Linux上

#include <cstdio> 


int main() { 

    float a,b,c; 
    a = 10.5; 
    b = 20.6; 
    c = a + b; 
    printf("%d \n", c); 
    return 0; 
} 

我有以下控制檯命令進行編譯:

g++ -m32 file.cpp 

當我執行a.out文件是這樣的:

./a.out -m32

結果我得到的是這樣的:

-1610612736

這是怎麼回事?我究竟做錯了什麼?編譯時如果沒有-m32標誌,我會得到假結果。海灣合作委員會採取同樣的方式

+2

%d是打印有符號整數,則需要%F打印浮動。 – Joe

+4

你應該養成總是用警告啓用的習慣,至少是'-Wall'標誌。這會使'g ++'警告該格式代碼錯誤。警告是技術上正確的東西,但仍然不太正確,並且會經常告訴您有關代碼中的未定義行爲(如此類)。 –

+0

此外,您不會將'-m32'標誌傳遞給程序。這只是編譯器(可能不是你真正想要的,只是拋棄它)。 – BoBTFish

回答

3

您的格式說明符是錯誤的。它應該是

printf("%f \n", c); 
+0

好吧,那很尷尬。它現在有效。謝謝! – spurra

2

您的格式字符串是錯誤的。

你可以只用輸入輸出流,並與格式字符串進行了半晌:

std::cout << c << '\n';