鱼C论坛

 找回密码
 立即注册
查看: 2470|回复: 3

[已解决]求大佬传授一下思路

[复制链接]
发表于 2022-11-12 23:11:29 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
//#include <math.h>
//#include <stalib.h>

void main()
{
    int a=3,b=4,c=5;
   a++>=--b&&b>c--&&++c;
   printf("%d,%d,%d",a,b,c);
   
    //printf("%d",c);
   
    }

答案是4.3.4
这个题b,c不应该是根据逻辑运算符来解的吗为什么是3 4
最佳答案
2022-11-13 00:02:50
这个是因为C语言的短路现象
&&和||都是C语言中的短路运算符
短路就是仅计算逻辑表达式中的一部分便能确定结果,那就不对整个表达式进行计算
举个例子,在1+1==3&&2+2==4这个式子中,仅判断1+1==3这个式子就能得出该式子的结果为0,所以就不用再判断2+2==4了
短路的好处就是可以提高程序的运行效率,毕竟少执行个式子嘛
但如果是这样的代码
// 这里只给出main函数中的内容
int a=0;
int b=1;
a&&b++;
这里a的结果就是0,所以可以确定式子的值为0,就不会去执行b++了,所以b=1
懂了这些,你就知道你的代码结果为什么是4,3,4了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-12 23:31:43 | 显示全部楼层
本帖最后由 gandixiwang 于 2022-11-12 23:37 编辑

我记得c语言是不能连续判断的
a++>=--b&&b>c--&&++c;
的结果只会是相当于
a++>=--b&&b>c--;
如果a++>=--b为false的话,那他连
b>c--;
都不会执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-12 23:37:40 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-12 23:55 编辑

a ++ >= --b && b > c -- && ++ c ;
        这是通过两个 && 连接的具有 3 个子表达式的逻辑与表达式,根据规则,以从左到右的顺序测试各个子表达式的值,直到整个表达式的值能被确定为止。在 3 个子表达式的值都是 true 或者,其中有任何一个子表达式的值是 false 的情况下,整个表达式的值才能确定。
        先测试 a ++ >= --b
a = 3,表达式 a ++ = 3,b = 4,表达式 -- b = 3,所以,a ++ >= -- b 的值是 true,在比较操作的同时,a = a + 1 = 4,b = b - 1 = 3
        由于 a ++ >= --b 的值是 true,所以,需要继续测试下一个子表达式 b > c -- 的值
b = 3,c = 5,表达式 c -- = 5,所以,b > c -- 的值是 false,在比较操作的同时, c = c - 1 = 4
        由于 b > c -- 的值是 false,所以,整个表达式的值已经确定为 false,这个时候,a = 4,b = 3,c = 4
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-13 00:02:50 | 显示全部楼层    本楼为最佳答案   
这个是因为C语言的短路现象
&&和||都是C语言中的短路运算符
短路就是仅计算逻辑表达式中的一部分便能确定结果,那就不对整个表达式进行计算
举个例子,在1+1==3&&2+2==4这个式子中,仅判断1+1==3这个式子就能得出该式子的结果为0,所以就不用再判断2+2==4了
短路的好处就是可以提高程序的运行效率,毕竟少执行个式子嘛
但如果是这样的代码
// 这里只给出main函数中的内容
int a=0;
int b=1;
a&&b++;
这里a的结果就是0,所以可以确定式子的值为0,就不会去执行b++了,所以b=1
懂了这些,你就知道你的代码结果为什么是4,3,4了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 20:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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