首页 > 数学 > 题目详情
inta=3;求表达式a=('m'>'n')?a+2:a-2,a+3,3*a的值之后,a的值是计算顺序
题目内容:
int a = 3;求表达式a = ('m' >'n')?a+2:a-2,a+3,3*a的值之后,a的值是 计算顺序优质解答
a = ('m' >'n')?a+2:a-2,a+3,3*a
等同于a = true?a+2:a-2;
等同于a=a+2; a=5;
,的运算顺序是自左向右.
a+3,3*a在这里没有意义. - 追问:
- 为什么 a+3, 3*a在这里没有意义
- 追答:
- 因为,运算符是自左向右运算,而,运算符的优先级最低,所以先计算 a = ('m' >'n')? a+2:a-2 a+3 3*a三个算式, 而a+3, 3*a运算后没有赋给其它变量值,所以这种运算是没有用处的。 我的答案也错了,'m'>'n'应该是false,'m'在'n'的前面,相减应该是-1。 最终结果应该是1 如果改成 a = (('m' >'n')? a+2:a-2,a+3,3*a); 那么就相当于a = 3*a; 这是因为用()包起来的多项表达式,用,分隔,取()中的最后一项为运算结果。
优质解答
等同于a = true?a+2:a-2;
等同于a=a+2; a=5;
,的运算顺序是自左向右.
a+3,3*a在这里没有意义.
- 追问:
- 为什么 a+3, 3*a在这里没有意义
- 追答:
- 因为,运算符是自左向右运算,而,运算符的优先级最低,所以先计算 a = ('m' >'n')? a+2:a-2 a+3 3*a三个算式, 而a+3, 3*a运算后没有赋给其它变量值,所以这种运算是没有用处的。 我的答案也错了,'m'>'n'应该是false,'m'在'n'的前面,相减应该是-1。 最终结果应该是1 如果改成 a = (('m' >'n')? a+2:a-2,a+3,3*a); 那么就相当于a = 3*a; 这是因为用()包起来的多项表达式,用,分隔,取()中的最后一项为运算结果。
本题链接: