Если мы напишем 16843009 в двоичном виде, мы получим 1000000010000000100000001
.Подставляя это с дополнительными нулями, мы получаем: 00000001000000010000000100000001
.Каждые 8 битов (которые являются символами) имеют значение 00000001
, которое равно 1
.
&x
- это указатель на массив символов (в частности, char(*)[5]
).Это интерпретируется как указатель на int.В вашей системе int
, вероятно, составляет 4 байта, и все четыре из этих байтов отдельно установлены в 1, что означает, что вы получаете int, где каждые 8 битов установлены в 1.