假设我有以下两种类型:
我希望从a中减去b并将结果赋值给c,如果差的绝对值大于2^63,那么它将会回绕(或未定义),这是可以接受的。但对于绝对差小于2^63的情况,我希望结果是正确的。
以下是三种方式之一:
哪些是按照标准保证可用的?(为什么/如何?)
typedef unsigned long long uint64;
typedef signed long long sint64;
我有以下这些变量:
uint64 a = ...;
uint64 b = ...;
sint64 c;
我希望从a中减去b并将结果赋值给c,如果差的绝对值大于2^63,那么它将会回绕(或未定义),这是可以接受的。但对于绝对差小于2^63的情况,我希望结果是正确的。
以下是三种方式之一:
c = a - b; // sign conversion warning ignored
c = sint64(a - b);
c = sint64(a) - sint64(b);
哪些是按照标准保证可用的?(为什么/如何?)