static int var[2] __attribute__ ((aligned (8))) =
{
0x0255cfa8,
0xfdfcddfc
};
为什么会收到警告:narrowing conversion of '4261207548u' from 'unsigned int' to 'int' inside { } is ill-formed in C++11 [-Wnarrowing]
?
即使数字没有后缀u
或U
,它们似乎也被视为未签名?
答案 0 :(得分:1)
如果int
是您平台上的32位,则0xfdfcddfc
是unsigned
。那是因为您使用了十六进制表示法。
您有用的编译器会警告您该数字对于int
而言太大。
请注意,如果您编写了等效的拒绝对象,那么它将是signed
类型(long
或long long
),并且编译器将发出稍有不同的警告。
参考:https://en.cppreference.com/w/cpp/language/integer_literal#The_type_of_the_literal