-1

我有像 12、13 这样的值,我想将它们分配给单个整数示例 k。我尝试了以下程序,但没有得到预期的结果。

enter code here
#include <stdio.h>
int main()
{

int k = 0;
printf("k address is %u\n", &k);
char* a = &k;
printf("%u\n", a);
*(a) = 12;
a++;
printf("%u\n", a);
*(a) = 13;
printf("k is %d\n",k);
return 0;
}

输出是:

 k address is 3213474664
 3213474664
 3213474665
 k is 3340
4

2 回答 2

2

在您的系统上,ints 显然是以little-endian格式存储的,因为 13*256 + 12 = 3340。

于 2012-04-10T09:59:05.223 回答
1

如果要以与字节序无关的方式修改整数中的字节,则应使用移位和按位运算符。

例如,如果您尝试将 IP 地址 1.2.3.4 存储到 32 位整数中,您可以执行以下操作:

unsigned int addr = (1 << 24) | (2 << 16) | (3 << 8) | 4;

这保证这1是最重要的字节等等。

于 2012-04-10T10:22:48.660 回答