int in=0xeef01f88;
int * ipoi=∈
char*cpoi=(char*)ipoi;
cout<<std::hex<<(int)*ipoi<<" "<<(int)*(cpoi)<<" "<<(int)*(cpoi+1)<<" "<<(int)*(cpoi+2)<<endl;
Когда я компилирую это на Cxxdroid (компилятор Android), он работает отлично, как и должно быть, поэтому cout из указателей на символы дает значения отдельных байтов, такие как:
eef01f88 88 1f f0.
Другой способ, когда я компилирую тот же код в Windows, используя GNU GCC COMPILER, я получил такой вывод:
eef01f88 ffffff88 1f fffffff0.
Как это возможно? Почему первое и третье значения указателя на символ имеют ffffff сами по себе? Вокруг *(cpoi+1)
даже нет значений ff. (F0)
Поможет ли смена компилятора решить проблему?
Я использую блоки кода. В нем есть много вариантов компиляции, но я уже попробовал все доступные стандарты (до 2011 года стандарт языка ISO C). Чего мне не хватает?