逗号表达式的计算若已定义: int x; 则表达式 ((x=4*5,x*5),x+25) 的值是( D ). A. 20 B. 100 C. 125 D. 45为什么呢?谢谢您的分析!
问题描述:
逗号表达式的计算
若已定义: int x;
则表达式 ((x=4*5,x*5),x+25) 的值是( D ).
A. 20 B. 100 C. 125 D. 45
为什么呢?谢谢您的分析!
答
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60 逗号表达式的形式如下: 表达式1,表达式2,表达式3,...... ,表达式n 逗号表达式的要领: (1) 逗号表达式的运算过程为:从左往右逐个计算表达式。 (2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。 (3) 逗号运算符的优先级别在所有运算符中最低。
((x=4*5,x*5),x+25) = ((x=20,x*5),x+25) =(100,x+25)=125
答案应该为C
答
如楼上所述,逗号表达式先计算内括号,再计算外括号,先计算逗号前,再计算逗号后
((x=4*5,x*5),x+25)
第1步算x=4*5,此时X得到赋值,X = 20
第2步算x*5,值为100
则内括号整个的值100,X = 20 【注意,算x*5时,并未给X重新赋值】
第3步算X + 25,值为20 + 25 = 45 【并未给X重新赋值】
此时逗号表达式就相当于(100,45),显然整个表达式值 = 45