【问题标题】:Will Specific Operators give me different results?特定运算符会给我不同的结果吗?
【发布时间】:2015-03-15 14:35:20
【问题描述】:

我正在编写我的 Sam 的自学练习册,在第 5 课中,研讨会要求展示 32/7 和 32.0/7 的结果。使用不同的运算符(例如 float 或 int)会给我带来不同的结果吗?我尝试了我的代码,但它导致了一个错误。你能指出我正确的方向吗?

#include <iostream>
#include "stdafx.h"
using namespace std;

int main()
{
    int num1 = 32, num2 = 32.0, num3 = 7;
    int result = num1/num3;
    float result2 = num2/num3;

    cout << result << endl;
    cout << result2 << endl;
    return 0;
}

【问题讨论】:

  • 您可能想使用演员表:float result2 = (float)num2/(float)num3;
  • 当两个操作数都是int时,结果只是除法的商。当其中一个是 float 时,您会得到实际结果
  • “导致错误” 什么错误?编译时错误?运行时错误?它没有按您的预期工作?什么?

标签: c++ floating-point int operators


【解决方案1】:
int num1 = 32, num2 = 32.0, num3 = 7;

在这行代码中,您尝试将 32.0(浮点数)分配给整数数据类型,这是非法的。所以试试这个就明白了

cout<<32/7<<endl;
cout<<32.0/7<<endl;

【讨论】:

    【解决方案2】:

    您已将所有三个数字 num1num2num3 声明为 int,因此它们将表现为整数。您可能希望将num2 声明为float,以便result2 存储float 值。当两个ints相除时,它们将产生一个int,之后如果将结果存储在一个float中,它只会产生一个整数结果的floating point表示。例如:对于result2num2/num3 将是32/7,它将等于4 作为一个整数。现在,由于它必须存储在float 中(从右到左读取表达式),它将被类型转换为4.000000

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-21
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多