例题3:若t为double类型,表达式t=1,t+5,t++的值是 2.0 编出这个c语言程序

2025-04-11 18:45:47
推荐回答(4个)
回答1:

额,楼下的回答似乎已经偏离了出题人的意思了

2楼的代码

#include
int main()
{
double t;
printf("%lf",(t = 1, t + 5, t++));
return 0;
}

写得很好

但1楼的解释有点蛋疼了,搞得最后输出结果是t的值一样的

这里考的是逗号表达式的值和赋值表达式的值 好不好。。。。

逗号表达式的值是最左边的表达式的值

赋值表达式的结果是 =的左值

所以 只要 逗号那里 第一个是t=1那无论后面有多少个逗号,表达式是多么多么恶心的东西,最后结果 都是1

不信楼主可以试一下

回答2:

#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。

回答3:

逗号表达式的值是最后(右)的式子的值
double t,x;
x=(t=1,t+5,t++);
执行顺序为:t=1; 计算t+5,但结果被舍弃; t++; x的取值为最后一个表达式t++的结果等于2.0

回答4:

逗号,顺序执行,首先t=1,t+5并没有赋值,t还是1,最后t++,结果+1,就是2.0