条件运算
在定义 a,b 的时候,对 a、b 进行了赋值,然后,又在第二句中再次对 a、b 进行了赋值,这样做有意义吗例如
int a=2,b=7;
计算下列表达式的值
a=4,b=1,a>b?++a:++b;
a,b的值是只看第二次赋值吗?
第一句的定义赋值有什么意义吗? 在这个例子中,第一句的定义赋值是有意义的。它定义并初始化了变量a和b,使得在后面的代码中可以使用它们。
在表达式a=4,b=1,a>b?++a:++b;中,实际上只有条件运算符右边的表达式会生效并执行计算。条件运算符的工作原理是,根据条件判断的结果选择执行表达式的部分。如果条件成立(即a>b),则执行++a;如果条件不成立,则执行++b。最终,变量a或b会根据执行的表达式进行递增操作。
因此,在这个例子中,最终a的值是5,b的值是1。第一次赋值的结果并没有影响到最后的计算结果,只有第二次赋值才起作用。但是第一次赋值仍然是有意义的,因为它确保了变量a和b在后续的代码中有初始值。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 你说的很对,对一个变量而言,所有没有得到使用的赋值(没有出现在表达式的右边或函数的参数中)都是无效的赋值。 你可以这样理解,第二次赋值会覆盖掉第一次的赋值。这样做的话,第一次的定义赋值就没有意义了。
举个例子:
#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给覆盖了。
页:
[1]