在C++中,编译器会提醒我,从无符号数中减去另一个无符号数会得到无符号结果,因此调用abs()函数没有意义:
uint64_t a, b;
if (std::abs(a - b) > 10) {
std::cout << "Divergence achieved!" << std::endl;
}
好的,我明白减法就是加法,我知道在我的情况下数字将小于2的63次方,因此我使用static_cast
转换为int64_t
。但调用abs
的目的是避免编写以下内容:
if (a - b > 10 || b - a > 10) {
std::cout << "Divergence achieved!" << std::endl;
}
有没有更通俗易懂的方式来完成这个操作?
abs
是没有意义的,因为它永远不会是负数。 - 1201ProgramAlarma
是无符号整数,而b
也是无符号整数,那么根据语言规则,a-b
的结果也将是无符号整数。 - 1201ProgramAlarm