我具有以下功能,可以找到4个数字的最小和,以及最大1个:
git add .
现在,如果我省略了(无符号的long long)转换,则会溢出。有人知道为什么吗?编译器是否应该自动将int转换为unsigned long long?
答案 0 :(得分:0)
感谢您的评论!答案由@JeJo给出。更具体地说:
如果我们省略所有(无符号长整型)转换,那么加法运算的结果将是一个整数(溢出),随后将在无符号长整型转换。为了防止溢出,我们只需要保留(unsigned long long)强制转换之一,因为这样一来,加数之一就是ULL,而add操作的其他部分也将被转换。因此,加法运算的结果将是一个无符号的长整型数。