鱼C论坛

 找回密码
 立即注册
查看: 2400|回复: 9

[已解决]逻辑或||左边为真,右边到底执不执行,我的运行结果是

[复制链接]
发表于 2023-2-27 17:54:16 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int a=3,b=3;
       
        (a=0) && (b=5);
        printf("a=%d, b=%d\n", a,b);
       
        (a=1) && (b=5);
        printf("a=%d, b=%d\n", a,b);       
       
        (a=1) || (b=5);
        printf("a=%d, b=%d\n", a,b);
       
        (a=0) || (b=5);
        printf("a=%d, b=%d\n", a,b);
       
        return 0;
}
最佳答案
2023-2-27 18:15:26
枫915 发表于 2023-2-27 18:12
不应该是:
a=0, b=3
a=1, b=5

b 的值怎么会自动回到3呢?无论是否短路,初始化之后的语句里它就只可能被赋值为5了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-27 18:01:07 From FishC Mobile | 显示全部楼层
逻辑或左边为真,右边是不会执行的,
这在编程中,叫逻辑短路。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-27 18:03:06 | 显示全部楼层
quark 发表于 2023-2-27 18:01
逻辑或左边为真,右边是不会执行的,
这在编程中,叫逻辑短路。

但我用Dev运行的结果是:
a=0, b=3
a=1, b=5
a=1, b=5
a=0, b=5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-27 18:03:28 | 显示全部楼层
逻辑与:https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf#subsection.6.5.13
逻辑或:https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf#subsection.6.5.14
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-27 18:05:07 | 显示全部楼层
枫915 发表于 2023-2-27 18:03
但我用Dev运行的结果是:
a=0, b=3
a=1, b=5

您预期的结果是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-27 18:06:42 From FishC Mobile | 显示全部楼层
不会,这是断路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-27 18:12:17 | 显示全部楼层
dolly_yos2 发表于 2023-2-27 18:05
您预期的结果是?

不应该是:
a=0, b=3
a=1, b=5
a=1, b=3//不执行的话,这不应该是3?
a=0, b=5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-27 18:15:26 | 显示全部楼层    本楼为最佳答案   
枫915 发表于 2023-2-27 18:12
不应该是:
a=0, b=3
a=1, b=5

b 的值怎么会自动回到3呢?无论是否短路,初始化之后的语句里它就只可能被赋值为5了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-27 18:21:20 | 显示全部楼层
dolly_yos2 发表于 2023-2-27 18:15
b 的值怎么会自动回到3呢?无论是否短路,初始化之后的语句里它就只可能被赋值为5了

突然看明白了,是因为第二次赋值b的值已经被改成5了,这是全局变量?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-27 18:23:12 | 显示全部楼层
枫915 发表于 2023-2-27 18:21
突然看明白了,是因为第二次赋值b的值已经被改成5了,这是全局变量?

没错,所以如果改变每次赋值的值让其互不相同可能会看得更清楚一些
这不是全局变量,但是同一个变量,一直在其作用域内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 19:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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