我正在编译下面的代码,由于某种原因,我无法将-2147483648分配给8字节长且已签名的变量.
long long x = -2147483648;
Run Code Online (Sandbox Code Playgroud)
当我跨过这一行时,x的值是2147483648,MS Visual Studio中的'Watch'窗口显示x的类型是__int64.sizeof(x)也返回8.
根据limit.h,签署的long long的限制是:
#define LLONG_MAX 9223372036854775807i64 /* maximum signed long long int value */
#define LLONG_MIN (-9223372036854775807i64 - 1) /* minimum signed long long int value */
Run Code Online (Sandbox Code Playgroud)
和:
/* minimum signed 64 bit value */
#define _I64_MIN (-9223372036854775807i64 - 1)
/* maximum signed 64 bit value */
#define _I64_MAX 9223372036854775807i64
Run Code Online (Sandbox Code Playgroud)
我只是不明白!
有人可以对此有所了解吗?
c ×1