C语言..若 x,i,j和K都是int型,则执行表达式 x=(i=4,j=16,k=32)后X的值为多少?我想知道详细的解法!

来源:百度知道 编辑:UC知道 时间:2024/06/19 09:05:46
要稍微详细点啊!

首先,它是个赋值句X=的问题,i=4.j=16,k=32是逗号表达式,逗号表达式的值是由最后一个逗号表达式决定的,所以(i=4,j=16,k=32)的结果是k=32.
连起来就是X=k=32即k=32.
希望你理解了。再给你举个例子:
就用上面的变量:X=(i=4,i+1,j=3)的结果就是X=3,无论前面有多少个逗号,它只取决于最后一个,但你也不能说不算前面的,运行这条命令后想当于给3个变量赋值了,i=4,中间只是个数,就是4+1但并没有将4+1赋i.j=3.
如果是X=(i=4,i+1,i=8)那么结果就是X=8.

x 值为32
其中 括号的优先级高,先算括号里的,里面是逗号表达式,从左到右依次运算
i的值赋成4,j为16,k为32,逗号表达式的值为最后的一个表达式的值就为32
原式等同于
i=4;
j=16;
k=32;
x=32;

平行语句执行:从左到右;
赋值语句执行:从右到左。

所以:x=(i=4,j=16,k=32)
执行过程就是:i=4,j=16,k=32,x=k;
答案是:x=32

逗号表达式,再赋值。。

结果32
#include<stdio.h>
void main()
{
int x=0,i=0,j=0,k=0;
x=(i=4,j=16,k=32);
printf("%d",x);
}