鱼C论坛

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

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

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

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

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

x
1.png
#include <stdio.h>
int  main()
{
        int i=8,j=5,p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d,%d,%d,%d\n",p,q,i,j);
return 0;
}
我自己计算的是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 | 显示全部楼层
没有正确答案
E:\tmp>cat main.c
#include <stdio.h>

int  main()
{
        int i=8,j=5,p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d,%d,%d,%d\n",p,q,i,j);
        return 0;
}

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

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

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-11-21 01:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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