鱼C论坛

 找回密码
 立即注册
查看: 1439|回复: 11

[已解决]为什么q的值不是21?

[复制链接]
发表于 2019-9-13 19:04:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.png

  1. #include <stdio.h>
  2. int  main()
  3. {
  4.         int i=8,j=5,p,q;
  5.         p=(i++)+(i++)+(i++);
  6.         q=(++j)+(++j)+(++j);
  7.         printf("%d,%d,%d,%d\n",p,q,i,j);
  8. return 0;
  9. }
复制代码

我自己计算的是q=6+7+8=21,但是计算机的结果是22,这是为什么呢?
求指点!
最佳答案
2019-9-16 09:43:47
q=(++j)+ (++j) + (++j)
q= (  7      +    7 )  +   8

知识点:优先级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-15 19:56:43 | 显示全部楼层
q= a + b  + c
q= (a + b) + c

加法的结合律:从左向右

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-16 09:25:47 From FishC Mobile | 显示全部楼层
cplus 发表于 2019-9-15 19:56
q= a + b  + c
q= (a + b) + c


都是21啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 09:43:47 | 显示全部楼层    本楼为最佳答案   
q=(++j)+ (++j) + (++j)
q= (  7      +    7 )  +   8

知识点:优先级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-16 11:32:12 From FishC Mobile | 显示全部楼层
cplus 发表于 2019-9-16 09:43
q=(++j)+ (++j) + (++j)
q= (  7      +    7 )  +   8


那也是q=(6+6)+7,更不对啊……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 12:38:21 | 显示全部楼层
没有正确答案

  1. E:\tmp>cat main.c
  2. #include <stdio.h>

  3. int  main()
  4. {
  5.         int i=8,j=5,p,q;
  6.         p=(i++)+(i++)+(i++);
  7.         q=(++j)+(++j)+(++j);
  8.         printf("%d,%d,%d,%d\n",p,q,i,j);
  9.         return 0;
  10. }

  11. E:\tmp>gcc -g -Wall -o main main.c
  12. main.c: In function 'main':
  13. main.c:6:12: warning: operation on 'i' may be undefined [-Wsequence-point]
  14.   p=(i++)+(i++)+(i++);
  15.           ~~^~~
  16. main.c:6:12: warning: operation on 'i' may be undefined [-Wsequence-point]
  17. main.c:7:11: warning: operation on 'j' may be undefined [-Wsequence-point]
  18.   q=(++j)+(++j)+(++j);
  19.           ~^~~~
  20. main.c:7:11: warning: operation on 'j' may be undefined [-Wsequence-point]

  21. E:\tmp>main
  22. 27,22,11,8

  23. E:\tmp>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 14:52:54 | 显示全部楼层
一般不这样编代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 17:22:27 | 显示全部楼层
本帖最后由 cplus 于 2019-9-16 17:25 编辑

兄弟,按优先级的顺序去加  ,把结合律和优先级的知识,放在一起看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 17:31:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-16 17:38:15 From FishC Mobile | 显示全部楼层
说实话,你研究这个,真没多大意义,不同的编译器的答案都可能不一样,当然了,你觉得有价值,有意思,可以继续干
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-16 19:54:11 | 显示全部楼层
pythonsrj 发表于 2019-9-16 17:38
说实话,你研究这个,真没多大意义,不同的编译器的答案都可能不一样,当然了,你觉得有价值,有意思,可以 ...

不是研究,主要是刷二级题库刷到了,然后,跟我算的不一样啊就很懵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-16 19:59:24 | 显示全部楼层
cplus 发表于 2019-9-16 17:22
兄弟,按优先级的顺序去加  ,把结合律和优先级的知识,放在一起看

哦,知道了,我用q=(++j)+(++j),发现值是14然后才明白原来它是这样处理的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 10:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表