У меня есть следующий код:
#include <stdio.h>
int main(void)
{
int x __attribute__ ((aligned (16))) = 0;
printf("%lX\n", &x);
return 0;
}
Компиляция и запуск этого кода с использованием mingw32-c ++. Exe (GCC) 3.4.5 (mingw-vista special r3) печатает 0x22FF24
, что составляет 0b1000101111111100100100
.Компиляция и запуск этого кода с использованием g ++ (Debian 4.3.2-1.1) 4.3.2 печатает 0x7FFFF470EE90
, что составляет 0b11111111111111111110100011100001110111010010000
.
Из-за выравнивания я ожидаю, что последние 7 бит адреса переменной будутнуль.Я делаю ошибку в рассуждениях здесь?Что происходит?
Заранее спасибо,
Себастьян