我有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
答案 0 :(得分:2)
在您的系统上,int
显然以little-endian格式存储,因为13 * 256 + 12 = 3340。
答案 1 :(得分:1)
如果要以与字节无关的方式修改整数中的字节,则应使用shift和按位运算符。
例如,如果您尝试将IP地址1.2.3.4存储为32位整数,则可以执行以下操作:
unsigned int addr = (1 << 24) | (2 << 16) | (3 << 8) | 4;
这可以保证1
是最重要的字节,依此类推。