若已定义a和b是double类型,则表达式:a=1,b=a 3 2的值为
来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 00:51:55
因为3和2都是int型的,所以认为3/2的结果也是int的,舍弃后面的尾数,仅留下整数位的1.然后加上double型的x,复制给double型的y所以是2.0
c.2.0;因为,double是双精度的浮点型,但3/2=1,除非是3.0/2或者(double)3/2都=1.5,所以结果为2.0这种题型要自己上级多实践才能发现其中的奥妙,才能有很深的体会.
c.2.0;因为,double是双精度的浮点型,但3/2=1,除非是3.0/2或者(x的值为1.03/2等于1但要转换为1.0C因为x和y是实型
格式化输出若为%f(即printf(“%f”,y);),那么输出就为2.000000;格式化输出若为%d,输出就为0;若格式化输出为%3.1f,那么输出才为2.0;上面题目太不严密,希望你能真正搞懂哦
因为虽然x是1.00000000但是3和2都是整形啊,做除法的时候发生了截断哦,所以3/2不是1.5,而是1.所以y=2.0000000你这么写就对了3.0/2补充:2.0也是对的啊,没错.如果你在输
3/2向0取整.是1y=1+1类型自动转化.所以y为2.0
2.000000000再答:速度真快
两个整数相除取整数.y=x+3/2=1+1=2
这涉及到C语言的一些规定第一就是自动向上转换:也就是说占用空间少的类型和占用空间多的类型运算,运算结果转换为占用空间多的类型(这是为了防止运算结果放在少空间发生溢出)int占用4个字节double占用
0)w=a=bw的类型和ab不同,类型不同占用的存储空间和存放的寄存器也不一样,如果要赋值需重新对类型进行注释:w=(int)a=(int)b0)a=a++=5连环赋值是c和C++特有用法,顺序是从右
Da,b是double类型,如果ab是0.1,就会出现除数是零了,就出错了,D是对的,先判断,后赋值,这样允许的!
问题叙述错误!intfun(,doublea,doubleb)中,你确定有个逗号的?而且题目无停顿,都不知啥意思,咋解?再问:intfun(doublea,doubleb)应该是这样的,我写错了;再答
选CA中switch(x%2),x为实数,不能求余B中(int)x%2.0,2.0为实数,不能求余D中case0.0:a++;break;case1.0:b++;break;case中不能用实数常量,
选B再问:能不能解释一下为什么?再答:其实我看错了应该选C,D的A的a+b是表达式不能作左值B项中(int)a+b是double类型的不能作%的除数CD是对的弱类型的变量可以赋给强类型的变量但是不能反
fun(x,y)x,这个是神马啊,当然错了再问:为什么呀?fun(x,y)是个数,x也是数,为什么就不行呢!再答:但是它们两个合起来就不是一个数了啊,要不就在它们两个中间加上运算符号,加减乘除都可以再
#include#includeusingnamespacestd;#include#includeconstdoubleEQUAL_ZERO=0.00000001;voidf(doublea,dou
选C在同一行连续定义相同类型的变量,变量之间要用逗号分开,变量和类型之间不能有逗号.
D,A我用visualc++试过,说左操作必须为左值,就是说只能a=a+b,或a=b++;B显然被除数必须为整数.C除数和被除数不是同一类型.
'A'相当于int,VC做加法时,如果类型不匹配,就先转化为匹配的类型.而int转为doule丢失的信息最少,所以转为double相加
做这道题目首先要明确以下几点运算符的优先级顺序是++大于+大于==大于=double→float高↑long↑unsigned↑int←——char,short低A.相当于a=((a+b)=(b++)