鱼C论坛

 找回密码
 立即注册
查看: 1637|回复: 4

有关与逻辑运算符问题

[复制链接]
发表于 2022-5-25 21:15:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 tyf1218405122 于 2022-5-25 21:16 编辑

有个问题就是:
对于像这样的 表达式 :++a||++b&&++c ;
                                  ++a||(++b&&++c);

这两个表达式的执行顺序是什么样的;
逻辑运算符    &&    的优先级是比   ||    要高的,
       
        按照优先级来说是先执行后面的;
        但是按照序列点来说应该是先执行前面的;
还有第二个表达式加了括号,又是怎么样的一种情况呢?


在编译器中实验的是   都是从左往右顺序执行,没有按照优先级(无论有没有加括号);

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

使用道具 举报

发表于 2022-5-25 21:25:04 | 显示全部楼层

回帖奖励 +13 鱼币

你是怎么实验的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-25 22:50:41 | 显示全部楼层
这种东西不同编译器是不一样的,不建议这么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-26 16:00:08 | 显示全部楼层
jhq999 发表于 2022-5-25 22:50
这种东西不同编译器是不一样的,不建议这么写

但是有笔试,所以要弄清楚这个.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-26 16:25:34 | 显示全部楼层
本帖最后由 jhq999 于 2022-5-26 16:32 编辑
tyf1218405122 发表于 2022-5-26 16:00
但是有笔试,所以要弄清楚这个.


拿这个举例++a||++b&&++c ;
int main()
{
        int a=0,b=0,c=0;
        if (++a||++b&&++c )
        {

        }
        printf("%d %d %d",a,b,c);
        return 0;
}
结果
1 0 0
vs2012反汇编
102:         if (++a||++b&&++c )
00DD38C3 8B 45 F8             mov         eax,dword ptr [a]  
00DD38C6 83 C0 01             add         eax,1  
00DD38C9 89 45 F8             mov         dword ptr [a],eax  
00DD38CC 75 14                jne         main+52h (0DD38E2h) ;;;;这里只要a为真,直接跳转根本不执行 ++b&&++c,有的编译器就从右到左先c=1然后b=1,b&&c=true,就不执行++a,结果是0 1 1
00DD38CE 8B 45 EC             mov         eax,dword ptr [b]  
00DD38D1 83 C0 01             add         eax,1  
00DD38D4 89 45 EC             mov         dword ptr [b],eax  
00DD38D7 74 09                je          main+52h (0DD38E2h)  
00DD38D9 8B 45 E0             mov         eax,dword ptr [c]  
00DD38DC 83 C0 01             add         eax,1  
00DD38DF 89 45 E0             mov         dword ptr [c],eax  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 00:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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