int i = "hello world";
При этом вы присваиваете адрес строкового литерала "hello world"
в памяти объекту int
i
, что в большинстве случаев является неопределенным поведением, поскольку значение местоположения в памяти во многих случаях выходит за рамки область, которую может содержать объект типа int
.
Это неопределенное значение затем печатается с помощью:
printf("%d", i);
Тем не менее, компилятор должен выдавать предупреждение при этом без явного преобразования Например, когда я скомпилировал ваш код с помощью g cc, он дал:
предупреждение: инициализация 'int' из 'char *' делает целое число из указателя без приведения [-Wint-преобразование]
Никогда не игнорируйте предупреждения компилятора.