在语句

时间:2017-04-14 20:50:42

标签: c++ visual-c++

语句中分配给num的值是什么:double num = 5/2;?

有些网站说2有人说2.5。请帮助。

3 个答案:

答案 0 :(得分:1)

double num = 5/2;结果为2。

double num = 5/2.0;double num = 5.0/2.0;double num = 5.0/2;结果为2.5。

您最好自己尝试代码。当你一个人无法思考/工作时,提出问题。这样你就可以了解更多。

答案 1 :(得分:1)

double num = 5/2;

在大多数情况下,每个表达式,即使它是较大表达式的子表达式,也会自行评估。结果的类型和值由(子)表达式本身确定,而不是由它出现的上下文确定。

在表达式5/2中,除法运算符有两个类型为int的操作数,因此它产生类型为int的结果。 (有些语言中,逐个整数除法产生非整数结果.C ++不是这些语言之一;也不是C语言。)

5/2的结果是2(因为整数除法截断)。该值将转换为num类型并用于初始化,因此num的初始值为2.0。 (22.0是截然不同的;它们具有相同的数学值,但具有不同的类型,即intdouble。这就是为什么隐式转换是必要的。)

如果您希望num具有值2.5,可以通过以下几种方式执行此操作:

double num = (double)5 / (double)2;
double num = (double)5 / 2;
double num = 5.0 / 2.0;
double num = 2.5;

在第二个示例中,左右操作数具有不同的类型,因此它们通过一些中等复杂的规则转换为公共类型。在这种情况下,int操作数将转换为double

我通常更喜欢在浮点表达式(5.0而不是5)中使用浮点常量而不是整数常量。在一些的情况下,整数常量将根据需要转换为浮点数,但正如我们在这里看到的那样,它更多地应用于单个文字而不是常量表达式。

答案 2 :(得分:0)

num的数据类型为double。因此,它将保存浮点值 但是,它还取决于你赋予它的内容 您当前正在为其分配整数值。 5/2 = 2
因此,num将被分配2,内部将保存为2.0

如果您希望num具有2.5,则在分配之前将其转换为浮点值 num = 5.0 / 2 | num = 5.0 / 2.0 | num = 5 / 2.0会导致num = 2.5