humen_robot

  • 98 主题
  • 182 帖子
  • 554 积分
  • 身份:LV3 中级技术员
  • E币:626

有关C语言printf函数的一个小问题

2017-12-20 03:22:50 显示全部楼层
这是一个printf函数的有关自增自减输出。用的编译器printf是从右到左计算的。
#include
int main ()
{
   int i = 8;
   printf("The raw value: i=%d\n", ++i);
   printf("++i=%d\n",++i);
   printf("++i=%d\n",++i);
   printf("--i=%d\n",--i);
   printf("--i=%d\n",--i);
   printf("++i=%d \n++i=%d \n--i=%d \n--i=%d\n",++i,++i,--i,--i);
   printf("i=%d\n",i);
   return 0;
}
编译执行后的结果:

  问一下,为什么最后一个printf输出的结果是一样的呢?使用的软件Code::Blocks,编译器是GNU GCC Compiler

最新评论

楼层直达:

面包板社区管理员

  • 119 主题
  • 377 帖子
  • 3130 积分
  • 身份:管理员
  • 论坛新秀
  • E币:1862
@朱詠筠 :我的理解是printf函数的所有实参先统一运算完再一起送给形参。

humen_robot

  • 98 主题
  • 182 帖子
  • 554 积分
  • 身份:LV3 中级技术员
  • E币:626
humen_robot 2017-12-20 10:08:55 显示全部楼层
所有实参统一进行运算后,再一起送给形参,编译执行后,结果可以理解。还有,对于定义的i,使用static存储类,也是可以的。不过,这里面还有些想不通的地方,上面出现的那种结果,是编译器的问题还是printf函数格式使用不当的问题还是其他问题?

376527184_110802298

  • 0 主题
  • 6 帖子
  • 236 积分
  • 身份:LV2 初级技术员
  • E币:190
printf()是一个函数,你所传入的参数都是一个计算式,计算完后才能传入函数内。所以你输出的结果都是9。另外,真正的C语言程序中是很少会有这样的语句的,这样阅读起来很累,而且不好Debug。
我要评论
3
1
广告
关闭 热点推荐上一条 /5 下一条
快速回复 返回列表