Привет у меня есть пример программы
#include <iostream>
int main() {
int a = -5;
int arr[a];
std::cout << "Size of arr: " << sizeof(arr) << std::endl;
return 0;
}
Здесь я получаю вывод 17179869164.
Мой вопрос в том, что значение размера массива не должно принимать отрицательные значения! и если я попытаюсь дать [-5], это выдаст ошибку. но теперь, как я получаю вывод 17179869164.
У меня тоже есть предположение: -5 преобразуется в беззнаковое целочисленное значение 4294967291, а общий размер задается как 17179869164 = 4294967291 * 4 (размер int).
Итак, я хотел знать, почему компилятор преобразует тип signed int в unsigned int и не выдает ошибку времени компиляции. Мне нужно было четкое понимание того, как компилятор выполняет этот фрагмент кода?
a
), потому что C++ не имеет variable- массивы длины. - person Some programmer dude   schedule 10.01.2020a
отрицательного значения. - person Frodyne   schedule 10.01.2020