c语言,帮我分析一下,感谢
#include<stdio.h>voidmain(){inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d",y,x...
#include <stdio.h>
void main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
看不懂 展开
void main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
看不懂 展开
1个回答
展开全部
这里首先定义了a,b,c,x,y五个变量,然后对其进行运算,由于括号表达式的运算优先级最高,赋值运算符优先级次之,逗号运算符优先级最低,所以y=(x=a+b),(b+c);这个语句可以等价理解为先运算(x=a+b),然后运算(b+c),接着运算y=(x=a+b),所以在运算后x为2+4=6,y=6
追问
b+c=10在里面有什么用?我分析结果y应该等于10,为什么y=6?
追答
没什么用,这里只不过是为了展示逗号表达式的运算而已,由于赋值运算语句优先级大于逗号,所以是将逗号表达式里的第一个表达式,即x赋值给y,而不是逗号表达式的最后一个等式赋值给y
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询