额,楼下的回答似乎已经偏离了出题人的意思了
2楼的代码
#include
int main()
{
double t;
printf("%lf",(t = 1, t + 5, t++));
return 0;
}
写得很好
但1楼的解释有点蛋疼了,搞得最后输出结果是t的值一样的
这里考的是逗号表达式的值和赋值表达式的值 好不好。。。。
逗号表达式的值是最左边的表达式的值
赋值表达式的结果是 =的左值
所以 只要 逗号那里 第一个是t=1那无论后面有多少个逗号,表达式是多么多么恶心的东西,最后结果 都是1
不信楼主可以试一下
#include
int main()
{
double t;
printf("%lf",(t = 1, t + 5, t++));
return 0;
}
我觉得这答案应该是1.0。应该是这个表达式执行完之后t变成了2.0,但表达式的值是1.0,因为t++表达式的值是原来t的值,然后t自增1。
逗号表达式的值是最后(右)的式子的值
double t,x;
x=(t=1,t+5,t++);
执行顺序为:t=1; 计算t+5,但结果被舍弃; t++; x的取值为最后一个表达式t++的结果等于2.0
逗号,顺序执行,首先t=1,t+5并没有赋值,t还是1,最后t++,结果+1,就是2.0