在表达式 (1LL + lo + hi)
中,(这是建议的写法)
变量的类型变化示意图
1LL + lo
:long long + int -> long long
(lo
被提升为long long
)(1LL + lo) + hi
:long long + int -> long long
(hi
被提升为long long
)
在表达式 lo + hi + 1LL
中,(不推荐的写法)
变量的类型变化示意图
lo + hi
:int + int -> int
(结果是int
类型)(lo + hi) + 1LL
:int (结果被提升为 long long) + long long -> long long
(结果是long long
类型)
所以,在内存中,lo
和 hi
的初始类型为 int
,但是一旦它们参与了与 1LL
的运算,整个表达式的类型就会被提升为 long long
类型。这样做的目的是为了防止可能的溢出,并确保运算结果的准确性。