【问题标题】:I get weird output for passing float value for 'a'我为“a”传递浮点值得到了奇怪的输出
【发布时间】: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 &gt;&gt; a &gt;&gt; b &gt;&gt; c ;是否成功。如果它失败了,你就是在垃圾上操作。
  • 究竟是什么让您认为您可以在您的程序希望读取一个整数时输入一个浮点值?
  • 你不觉得2.4 + 2 = 2很奇怪吗?始终初始化您的变量,并检查输入是否成功。

标签: c++ parameter-passing overloading


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多