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

作者&投稿:郭奖 (若有异议请与网页底部的电邮联系)
额,楼下的回答似乎已经偏离了出题人的意思了

2楼的代码

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

写得很好

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

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

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

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

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

不信楼主可以试一下

#include <stdio.h>
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

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

C语言实现如下:
#include void main(){double t,r;r=(t=1,t+5,++t);printf("%0.1f
",r);}输出:2.0
对于t=1,t+5,t++;这一逗号表达式,首先给double型变量赋值于1,在计算t=1逗号“,”后的t+5的值,接着计算t++,t自加1,到了这一步,t的值为2.0。整个逗号表达式的值为最后一个表达式的值,所以该逗号表达式的值为t++的值,即2.0。

逗号表达式的值为最后一个也就是最右边的那个式子的值,即1;
t++;是先返回t的值,然后给t加1,所以最后的值为1.

若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是___.(
答:若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是2.0。因为3和2都是整数类型的,所以认为3/2的结果也是整数类型的,舍弃后面的尾数,仅留下整数位的1。而为x和y为double类型,是双精度浮点型。双精度浮点型和整数类型做加法,精度取双精度浮点型,所以,y=x+3/2=1.0+1=2.0。...

请问:c语言中:若X为double型变量,请写出X=3.2运算,++X是(),变量X的值...
答:x=3.2 则++x是对整数部分的自增,所以++x是4.2,,,然后自增后数保留。原来的x就变成4.2。。。其实++x可以看成是x=x+1。。这样就容易理解了吧!把原先自己的数加一再赋值给自己

C语言:若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是2.0
答:1.x=1,,1是int类型,赋值给double的X的时候自动提升为double类型, 所以x=1.0(注意1.0是double类型的)。2.3/2的结果是int的1,然后double的 x加上int的1,先会吧int的1提升为double的1.0,然后x+1.0=2.0(2.0为double类型的)。

一道c语言题。假定x和y为double型,则表达式x=2,y=x+3/2的值是多少?
答:由于在计算3/2时,参与计算的两个数都是整型数据,则默认进行整型的计算得到的数也是整型的1,舍去了小数部分,a=y;[a=3]所以整个表达式的值为3.0 如果想得到3.5,要改写一下:这几种写法都可以 a=(x=2,y=x+3.0/2);a=(x=2,y=x+3/2.0);a=(x=2,y=x+(double)3/2);

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。_百度...
答:2147483647(-2^32~2^32-1)。本题中当N为44时,分子的取值将达到2971215073,超出int取值范围(2147483647),出现异常,导致计算结果出错,也就是PTA中判断的较大N出错。N<44时一切正常,当N=44时,分子值因为超出int取值范围出现错误。因此本题中,fm,fz,t应为double类型。

假定x和y为double型,则表达式x=2,y=x+3 2的值是A.3.500000 B.3 C...
答:本题考查C语言中变量类型的转换。C语言中若参与运算的变量的数据类型不同,则先转换成同一类型,然后进行运算。转换数据始终往长度增加的方向进行,以确保精确度,如int和long运算,则将int转换为long再运算,所有的浮点运算都是以双精度(double)进行的。题目中x、y都为double型数据,而表达式3/2为两...

C语言 若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是多少? 我...
答:double是双精度浮点型,不是整型,双精度浮点型数,直观上就是小数 的确应该是2.0 3/2的值是1 x是double类型 x+3/2自动转型为double类型 所以是小数。

帮我做一道C语言题吧!!! 设已定义x为double类型变量x=—3223.87654 print...
答:转换说明给程序员提供了大量对输出格式的控制方法。另一方面,转换说明很可能是复杂 而难以阅读的。事实上,在本节中想要完整详尽地介绍转换说明是不可能的,这里将只是简要 介绍一些较为重要的转换说明的性能。在第2章中已经看到,转换说明可以包含格式化信息。具体而言,用%.1f来显示带小数点 后一位数字...

C/C++语言程序设计41
答:建议你好好将书本上的基本语法反复好好看看,不懂就问问同学或老师。如果你是马上就要考试了,还是如此的话,那么说明你平时可真是没有好好听过课吧。

C/C++补考请高手,机会只有一次感谢加分!
答:第1题:D 可将表达式转为a<b?a:(c<d?a:d)第2题:C 第3题:B 第4题:C 第5题:D 第6题:B 第7题:C 第8题:B 不确定 第9题:D 第10题:A 第11题:A 第12题:不知道 第13题:不知道 第14题:D 第15题:C 第16题:B 第17题:C 第18题:B 第19题:A 第20题:...