我得到了奇怪的输出,用于传递' a'

时间:2018-01-16 11:49:40

标签: c++ parameter-passing overloading

在下面的程序中,如果尝试将float值赋给变量' a',我在第二行输出中得到奇怪的值,这与' a'无关。 / p>

这是我的代码:

#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&lt;&lt; a&lt;&lt; endl&lt;&lt; b&lt;&lt; endl&lt;&lt; ℃下;&LT; ENDL;

在调用函数之前,这个特定的行给出了

  

2

     

0

     

4.59135e-41

请解释此输出。为什么b = 0?

1 个答案:

答案 0 :(得分:1)

当代码将值读入int并且输入为2.4时,它会读取2然后点击小数点并停止;小数点不是整数输入的有效字符。所以a获取值2.然后代码尝试将下一个整数值读入b,然后失败,因为没有数字,只有小数点。之后,由于先前的失败,任何进一步的阅读尝试也将失败。