语句中分配给num的值是什么:double num = 5/2;?
有些网站说2有人说2.5。请帮助。
答案 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
。 (2
和2.0
是截然不同的;它们具有相同的数学值,但具有不同的类型,即int
和double
。这就是为什么隐式转换是必要的。)
如果您希望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