#include<iostream>
int main()
{
int arr[1] = {0x80000000};
std::cout<<arr[0]<<"\n";
return 0;
}
Приведенный выше код будет получить следующее сообщение об ошибке:Почему я не могу использовать '0x80000000' для инициализации массива int?
error: narrowing conversion of ‘2147483648u’ from ‘unsigned int’ to ‘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-ти, а типа (какой 'int' кажется на вашей машине). – StoryTeller
'[1]' - красная селедка, вы получите такое же поведение с простым 'int' –