【发布时间】:2018-06-25 02:56:57
【问题描述】:
在下面的程序中,如果尝试将浮点值分配给变量“a”,我会在输出的第二行得到奇怪的值,这与“a”无关。
这是我的代码:
#include <iostream>
using namespace std;
void add( int , int );
void add( float , int );
int main()
{
int a, b;
float c;
cout << "Enter a, b, c - ";
cin >> a >> b >> c ;
add( a , b );
add( c, b );
return 0;
}
void add( int a, int b){
cout << "a + b = " << a + b << endl;
}
void add( float a, int b){
cout << "b + c = " << a + b << endl;
}
示例输入:
2.4 2 2
样本输出:
a + b = 2
b + c = 4.59121e-41
我加了
cout
在调用函数之前,这一行给出了
2
0
4.59135e-41
请解释这个输出。为什么 b=0?
【问题讨论】:
-
你不检查
cin >> a >> b >> c ;是否成功。如果它失败了,你就是在垃圾上操作。 -
究竟是什么让您认为您可以在您的程序希望读取一个整数时输入一个浮点值?
-
你不觉得
2.4 + 2 = 2很奇怪吗?始终初始化您的变量,并检查输入是否成功。
标签: c++ parameter-passing overloading