在算术表达式C ++中输入类型

时间:2015-07-21 23:41:57

标签: c++

{{ Helpers::full_authenticate()->fullname }}

评估(a / b)后会发生什么?

1)结果首先存储在int(RHS上的变量类型)然后转换为64位double(LHS上的变量类型)然后存储在ans1或第一个变量中转换为64位double( LHS上的变量类型然后/发生?

2)如果首先评估为R.H.S上的变量类型,那么第二个如何打印正确的ans(因为ans超出了unsigned short int的限制)

1 个答案:

答案 0 :(得分:5)

在第一个示例中,首先将两个int除以截断整数除法,然后将该结果(2)赋值给ans1

第二种情况以微妙的方式不同:您选择小于的整数类型而不是int。因此,在之前任何算术运算符对它们起作用时,它们都会转换为int(如果它适合,就像在此处一样,转换为unsigned int,同时保留它们的值,并且在int上,您显示的操作不会溢出。然后将结果(类型为int)分配给unsigned int,因为它是非负的,所以没有什么奇怪的事情发生。

如果您尝试使用unsigned int代替unsigned short的第二个示例,则可以观察到“整数溢出”(由于无符号算术包装,因此没有真正的溢出)。