Многие люди знают следующий пример, чтобы узнать, является ли система прямым или прямым порядком байтов:
#include <stdio.h>
int main()
{
unsigned int i = 1;
char *c = (char*)&i;
if (*c)
printf("Little endian");
else
printf("Big endian");
getchar();
return 0;
}
Однако я хотел бы знать, является ли следующий фрагмент кода также действительным и функциональным:
#include <stdio.h>
int main()
{
unsigned int i = 1;
char *c = &i;
if (*c)
printf("Little endian");
else
printf("Big endian");
getchar();
return 0;
}
Это в основном касается вопроса о том, как интерпретируется оператор адреса & в системах с прямым порядком байтов.
Предположим, что вы не выполняете преобразование типов, как указано выше, а такжеПредположим, что система с прямым порядком байтов возвращает вам старший битовый адрес (в основном там, где начинается int), тогда этот фрагмент кода будет по-прежнему выводить «Little endian», хотя вы действительно имеете дело с системой с прямым порядком байтов.
Любой комментарий по этому вопросу был бы очень полезен.Заранее благодарю: D.