c ++非常奇怪的数字

时间:2017-02-26 15:26:44

标签: c++

void mult(int number2, int argc, char** argv)
{
    for (int i = 4; i < argc; i++) {
        double number3 = atof(argv[i]);
        double number2 = number2 * number3;
        cout << number2 << endl;
    }
}

我的输入是

./calc1 * 1 2 4 5 6

当我运行这个程序时,输出是:

2.07418e-317
4.14837e-317
1.65935e-316
8.29674e-316
4.97804e-315

我正在使用gedit。

2 个答案:

答案 0 :(得分:1)

double number2 = number2 * number3;

您需要使用某个值初始化number2,否则它将包含一个垃圾值,该值将与number3相乘

将上述陈述分成两个陈述

double number2 = /*some value to initialize number2*/;
number2 *= number3;    //now perform multiplication

此外,number2作为参数传递给函数mult,并且您还在number2函数内声明了一个名为mult的新变量。

答案 1 :(得分:0)

double number2 = number2 * number3;

您在初始化which causes undefined behavior之前访问number2