关于printf的一些问题
今天早上一个朋友让我调试一段代码.
它的输出结果是这样的:

先不考虑这代码是否合理
我想不通啊,*(p1+1)与*(p1-1)没什么不同啊,为啥输出的结果却完全不一样啊,按我的推测,它应该输出的是一个8bit数据,但*(p1-1)输出的却是32位的数据.所以想不通啊.
#include<stdio.h>
void main()
{
char a[8] = {1,20,30,40,50,60,70,80};
char * p =a;
int c = 0x12345678;
char d = 0xee;
char *p1 = &c;
char *p2 = &d;
printf("%x\n",a);
printf("%x\n",p);
printf("%x\n",p+1);
printf("%x\n",p+2);
printf("****************\n");
printf("C address = %x\n",&c);
printf("D address = %x\n",&d);
printf("%x\n",*p1);
printf("%x\n",*(p1+1));
printf("%x\n",*(p1+2));
printf("%x\n",*(p1+3));
printf("%x\n",d);
printf("%x\n",*(p1-1));
}
它的输出结果是这样的:

先不考虑这代码是否合理
我想不通啊,*(p1+1)与*(p1-1)没什么不同啊,为啥输出的结果却完全不一样啊,按我的推测,它应该输出的是一个8bit数据,但*(p1-1)输出的却是32位的数据.所以想不通啊.
...全文
相关推荐
C语言中printf()缓冲问题详解
主要给大家介绍了关于C语言中printf()缓冲问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
STM32串口使用Printf()函数问题
STM32串口使用Printf()函数问题 像操作C语言输出一样操作串口打印
printf()函数的有关问题.exe
printf()函数的有关问题.exe
printf之类的函数问题!
使用Visual C ++编译器的/ analyze开关对代码执行代码分析。 您需要拥有Team System或Ultimate版本才能做到这一点。
格式化输入输出浮点数据的细微问题(C标准:printf,scanf)
该文详细介绍了格式化输入输出浮点数时需要考虑的问题


