从较低到较高的隐式转换

时间:2018-12-09 12:31:52

标签: c++ type-conversion implicit

我具有以下功能,可以找到4个数字的最小和,以及最大1个:

git add .

现在,如果我省略了(无符号的long long)转换,则会溢出。有人知道为什么吗?编译器是否应该自动将int转换为unsigned long long?

1 个答案:

答案 0 :(得分:0)

感谢您的评论!答案由@JeJo给出。更具体地说:

如果我们省略所有(无符号长整型)转换,那么加法运算的结果将是一个整数(溢出),随后将在无符号长整型转换。为了防止溢出,我们只需要保留(unsigned long long)强制转换之一,因为这样一来,加数之一就是ULL,而add操作的其他部分也将被转换。因此,加法运算的结果将是一个无符号的长整型数。