fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. char cr1 = 'X', cr2 = 'Y';
  6. int in1, in2 = 0;
  7. double db1 = 1.0, db2 = 2.0;
  8. char *ch;
  9.  
  10. // Вывод адресов и размеров
  11.  
  12. printf("c1\t\t%p\t%zu\n", (void*)&cr1, sizeof(cr1));
  13. printf("c2\t\t%p\t%zu\n", (void*)&cr2, sizeof(cr2));
  14. printf("i1\t\t%p\t%zu\n", (void*)&in1, sizeof(in1));
  15. printf("i2\t\t%p\t%zu\n", (void*)&in2, sizeof(in2));
  16. printf("d1\t\t%p\t%zu\n", (void*)&db1, sizeof(db1));
  17. printf("d2\t\t%p\t%zu\n", (void*)&db2, sizeof(db2));
  18. printf("pc\t\t%p\t%zu\n", (void*)&ch, sizeof(ch));
  19.  
  20. // Запись шестнадцатеричного значения с уникальными байтами
  21. in1 = 0x1A2B3C4D; // байты: 0x1A, 0x2B, 0x3C, 0x4D
  22. ch = (char*)&in1;
  23.  
  24. // Побайтовый вывод
  25. printf("\nСодержимое in1 = 0x%08X по байтам:\n", in1);
  26. for (int i = 0; i < (int)sizeof(in1); i++) {
  27. printf("Байт %d: 0x%02X\n", i, (unsigned char)ch[i]);
  28. }
  29.  
  30. // Анализ порядка байтов
  31. if (ch[0] == 0x4D && ch[1] == 0x3C && ch[2] == 0x2B && ch[3] == 0x1A) {
  32. printf("\nСистема использует little-endian (младший байт по младшему адресу).\n");
  33. } else if (ch[0] == 0x1A && ch[1] == 0x2B && ch[2] == 0x3C && ch[3] == 0x4D) {
  34. printf("\nСистема использует big-endian (старший байт по младшему адресу).\n");
  35. } else {
  36. printf("\nНеизвестный порядок байтов.\n");
  37. }
  38.  
  39. return 0;
  40. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
c1		0x7ffcd2b94596	1
c2		0x7ffcd2b94597	1
i1		0x7ffcd2b94598	4
i2		0x7ffcd2b9459c	4
d1		0x7ffcd2b945a0	8
d2		0x7ffcd2b945a8	8
pc		0x7ffcd2b945b0	8

Содержимое in1 = 0x1A2B3C4D по байтам:
Байт 0: 0x4D
Байт 1: 0x3C
Байт 2: 0x2B
Байт 3: 0x1A

Система использует little-endian (младший байт по младшему адресу).