【发布时间】:2016-09-04 12:22:10
【问题描述】:
#include<iostream>
int main()
{
int arr[1] = {0x80000000};
std::cout<<arr[0]<<"\n";
return 0;
}
上面的代码会报如下错误:
错误:将“2147483648u”从“unsigned int”缩小到 'int' inside { } [-Wnarrowing] int arr[1] = {0x80000000};
但以下代码完美运行:
#include<iostream>
int main()
{
int arr[1];
arr[0] = 0x80000000;
std::cout<<arr[0]<<"\n";
return 0;
}
所以我的问题是:为什么我不能使用 '0x80000000' 来初始化 int 的数组?
【问题讨论】:
-
你可以,只是不是 32-but 类型(
int似乎在你的机器上)。 -
[1]是一个红鲱鱼,你会得到与普通int相同的行为
标签: c++ arrays initialization int list-initialization