2014-07-26 119 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

相关问题