C语言问题

问题描述:

C语言问题
若x、i、j和k都是int型变量,则计算下面表达式后,x的值为().
X=(i=4,j=16,k=32)

A. 4

B. 16
C. 32
D. 52

首先,这是一道考区分 "表达式" 与 "表达式的值" 的题.
我们要注意,表达式也是有它自己的值的.
一、逗号表达式(表达式1,表达式2,...,表达式n)采取从左到右顺序求值,并把最后一个逗号后的表达式的值作为 "逗号表达式的值".
如:表达式1,表达式2,……,表达式n这个 "逗号表达式的值"就等于 "表达式n" 的值,与其它值无关.
二、赋值表达式(变量=表达式)采取从右到左求值,并把等号左边的变量最终得到的值作为 "赋值表达式的值".
所以,表达式(i=4,j=16,k=32)的值是 k=32 的值,而 k=32 这个赋值表达式的值就是等号左边变量 k 的最终值,是32.于是,X 值为32.