{{ 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的限制)
答案 0 :(得分:5)
在第一个示例中,首先将两个int
除以截断整数除法,然后将该结果(2)赋值给ans1
。
第二种情况以微妙的方式不同:您选择小于的整数类型而不是int
。因此,在之前任何算术运算符对它们起作用时,它们都会转换为int
(如果它适合,就像在此处一样,转换为unsigned int
,同时保留它们的值,并且在int
上,您显示的操作不会溢出。然后将结果(类型为int
)分配给unsigned int
,因为它是非负的,所以没有什么奇怪的事情发生。
如果您尝试使用unsigned int
代替unsigned short
的第二个示例,则可以观察到“整数溢出”(由于无符号算术包装,因此没有真正的溢出)。