鱼C论坛

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

条件运算

[复制链接]
发表于 2024-1-5 16:07:16 | 显示全部楼层 |阅读模式

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

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

x
在定义 a,b 的时候,对 a、b 进行了赋值,然后,又在第二句中再次对 a、b 进行了赋值,这样做有意义吗
例如
int a=2,b=7;
计算下列表达式的值
a=4,b=1,a>b?++a:++b;
a,b的值是只看第二次赋值吗?
第一句的定义赋值有什么意义吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-5 16:08:24 | 显示全部楼层
在这个例子中,第一句的定义赋值是有意义的。它定义并初始化了变量a和b,使得在后面的代码中可以使用它们。

在表达式a=4,b=1,a>b?++a:++b;中,实际上只有条件运算符右边的表达式会生效并执行计算。条件运算符的工作原理是,根据条件判断的结果选择执行表达式的部分。如果条件成立(即a>b),则执行++a;如果条件不成立,则执行++b。最终,变量a或b会根据执行的表达式进行递增操作。

因此,在这个例子中,最终a的值是5,b的值是1。第一次赋值的结果并没有影响到最后的计算结果,只有第二次赋值才起作用。但是第一次赋值仍然是有意义的,因为它确保了变量a和b在后续的代码中有初始值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-5 16:27:29 | 显示全部楼层
         你说的很对,对一个变量而言,所有没有得到使用的赋值(没有出现在表达式的右边或函数的参数中)都是无效的赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-5 19:41:36 | 显示全部楼层
你可以这样理解,第二次赋值会覆盖掉第一次的赋值。这样做的话,第一次的定义赋值就没有意义了。
举个例子:
#include <stdio.h>

int main(){

        int a = 2, b = 7;
        a = 4,b = 1;

        a > b ? ++a : ++b;
        
        printf("%d\n", a);
        printf("%d\n", b);
}
➜  desktop vim test.c
➜  desktop gcc test.c && ./a.out
5
1
a的值变为5了,因为第二次a = 4 把第一次的 a = 2给覆盖了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 17:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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