2014-07-26 164 views
-6

爲什麼我沒有得到正確的結果?爲什麼此代碼會產生奇怪的意外輸出?

我沒有得到px的正確輸出,雖然我把它命名爲double,但我得到了一些令人害怕的數字文本混搭。

#include <iostream> 
using namespace std; 

int main(){ 
double a = 0; double b = 0; double c = 0; double x = 0; 
cout << "Welcome to Lytis! \nPlease enter a:"; 
cin >> a; 
cout << "Please enter b:"; 
cin >> b; 
cout << "Please enter c:"; 
cin >> c; 
if (a != 0){ 
    double d = (b*b) - (4 * a * c); 
} 
f (d == 0){ 
     double x = -(b)/(2 * a); 
     double *px = &x; 
     cout << "The only solution is x=" << px; 
     cin.get(); 
    } 

我錯過了什麼?

+10

#爲什麼#are#你使用#using#哈希標籤? – Mehrdad

+0

我想你得到一個十六進制數字,你打印指針的地址。閱讀指針,你會找到你的解決方案。 – AxelOmega

+0

您缺少部分實際的代碼。此代碼不能編譯,所以它*沒有行爲*。如果您沒有向我們展示您的實際代碼,我們無法告訴您程序有什麼問題。將您的實際代碼複製並粘貼到問題中。 –

回答

1

看來px是double *類型,因此輸出它就是打印出一個存儲位置(通常以十六進制表示,即0-9A-F)。

分配double *px = &x是合法的,因爲它是分配參考(存儲位置)的指針,但是當你輸出與cout指針它將顯示其位置。

也許嘗試:

cout << "The only so....." << *px; 
+1

感謝您的貢獻! – alitaras

2

1)您的代碼不編譯(如d不宣)

2)的 「數字文本meshup」 是的地址(指針)x

使用引用操作*來獲取值指出:

cout << "The only solution is x=" << *px; 
            ^^^ 
            Here 

3)您應該檢查的cin返回值是對輸入錯誤的安全。

4)"Lytis" means "Sex" in Lithuanian.

+0

*您的代碼無法編譯(例如'd'沒有聲明)* - 我會在那裏停止。 –

+5

我只想去4)... – quantdev

+0

在希臘這意味着求解... – alitaras

相關問題