请选择 进入手机版 | 继续访问电脑版
查看: 475|回复: 18

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

[复制链接]

84

主题

98

帖子

656

积分

一马当先

Rank: 4

积分
656
 楼主| 发表于 2019-3-4 17:35:02 | 显示全部楼层 |阅读模式
这是一个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;
}
编译执行后的结果:

C语言

C语言


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

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10CKB和50U币 可以兑换精美礼品, 目前已有18人回答
回复

使用道具 举报

0

主题

2

帖子

4

积分

一匹野马

Rank: 1

积分
4
发表于 2019-3-4 23:06:11 | 显示全部楼层
我也不会哦
回复

使用道具 举报

0

主题

274

帖子

644

积分

一马当先

Rank: 4

积分
644
发表于 2019-3-5 10:43:30 | 显示全部楼层
楼主你好,从你的程序来看(程序是顺序执行),printf函数是先计算,最后再输出结果,所以你倒数第二个输出函数自增两次再自减两次,所以输出结果与你倒数第三个输出是一样的9,最后一个你是直接输出i的值,自然就是等于9

评分

参与人数 1UB +10 收起 理由
bing680610 + 10

查看全部评分

回复

使用道具 举报

87

主题

101

帖子

578

积分

初遇闯客

Rank: 3Rank: 3

积分
578
发表于 2019-3-5 18:05:03 | 显示全部楼层
我的理解是printf函数的所有实参先统一运算完再一起送给形参。

评分

参与人数 1UB +10 收起 理由
bing680610 + 10

查看全部评分

回复

使用道具 举报

84

主题

98

帖子

656

积分

一马当先

Rank: 4

积分
656
 楼主| 发表于 2019-3-6 10:08:51 | 显示全部楼层
所有实参统一进行运算后,再一起送给形参,编译执行后,结果可以理解。还有,对于定义的i,使用static存储类,也是可以的。不过,这里面还有些想不通的地方,上面出现的那种结果,是编译器的问题还是printf函数格式使用不当的问题还是其他问题?
回复

使用道具 举报

5

主题

61

帖子

267

积分

勇闯江湖

Rank: 2

积分
267
发表于 2019-3-6 15:37:00 | 显示全部楼层
这个我之前在百度那里回答过类似的问题https://zhidao.baidu.com/questio ... ?entry=qb_uhome_tag

评分

参与人数 1UB +10 收起 理由
bing680610 + 10

查看全部评分

回复

使用道具 举报

0

主题

2

帖子

4

积分

一匹野马

Rank: 1

积分
4
发表于 2019-3-6 20:41:32 | 显示全部楼层
厉害了厉害了,完全看不懂啊
回复

使用道具 举报

52

主题

73

帖子

551

积分

初遇闯客

Rank: 3Rank: 3

积分
551
发表于 2019-3-7 10:21:29 | 显示全部楼层
printf()是一个函数,你所传入的参数都是一个计算式,计算完后才能传入函数内。所以你输出的结果都是9。另外,真正的C语言程序中是很少会有这样的语句的,这样阅读起来很累,而且不好Debug。

评分

参与人数 1UB +10 收起 理由
bing680610 + 10

查看全部评分

回复

使用道具 举报

0

主题

2

帖子

5

积分

一匹野马

Rank: 1

积分
5
发表于 2019-3-7 15:11:09 | 显示全部楼层
前面的++i,--I,都是先执行了i+1后,打印出i值,i++打印i的值在执行i+1,所以最后一个print的i值更他上一个i值相同等于9

评分

参与人数 1UB +10 收起 理由
bing680610 + 10

查看全部评分

回复

使用道具 举报

0

主题

13

帖子

50

积分

一匹野马

Rank: 1

积分
50
发表于 2019-3-11 18:22:01 | 显示全部楼层
有点看不懂啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表
  • 站内导航
  • 用户指南
  • 王国概况
  • 科技资讯
  • 小程序
  • 公众号
客服电话 :   400-830-1818 公司地址 :   深圳市南山区英唐大厦六楼
粤Copyright2018-2020 / 闯客网 版权所有 粤ICP备17106242号-1