编我写的作品为一些整数的值,但不是所有...为什么?无法正确提取整数字节
程序输出
int value is abcdef78
first byte is 78 addr is 2686741
second byte is ffffffef addr is 2686742
third byte is ffffffcd addr is 2686743
fourth byte is ffffffab addr is 2686744
预期输出
int value is abcdef78
first byte is 78 addr is 2686741
second byte is ef addr is 2686742
third byte is cd addr is 2686743
fourth byte is ab addr is 2686744
Process returned 0 (0x0) execution time : 0.015 s
Press any key to continue.
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0xabcdef78;
int *ip;
printf("int value is %x\n",i); // *ip contents of address
char c;
char *cp;
cp=&i;
c = *cp;
printf("first byte is %x addr is %d\n",*cp++,cp);
printf("second byte is %x addr is %d\n",*cp++,cp);
printf("third byte is %x addr is %d\n",*cp++,cp);
printf("fourth byte is %x addr is %d\n",*cp++,cp);
return 0;
}
更改'%x'→'%hhx'和'%d'→'%p'。另外,如果您希望程序可靠地工作,您应该在printf语句后增加'cp'。 –
该代码调用*未定义的行为*。在每个输出调用中,您都有无法修改和访问'cp'的情况。 – WhozCraig
也许尝试使用unit_8t数据类型而不是int。 – LethalProgrammer