若有定义语句:int x=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值?为什么?

 我来答
娱乐小八卦啊a
高粉答主

2020-02-07 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117826

向TA提问 私信TA
展开全部

x/y的结果为1,右边表达式的值为1.9,因为z为整型,所以舍去小数部分。

这题考察的是int类型的知识点。4kb,32bit,范围 -2147483648 到 2147483647。

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

应为2的31次方十进制数:2147483648。所以int数据范围应该是-2147483648到2147483648。

扩展资料

数据存储的时候会做一系列的转化,首先会将十进制的数值转化 位二进制的数值位,再添加上符号位(【符号位】+【数值位】二进制源码)。但是计算机 不会直接存储二进制源码,而是存储的二进制源码对应的补码。

已知源码 :

0111 1111 1111 1111 1111 1111 1111 1111 =   -2147483648

1100 0000 0000 0000 0000 0000 0000 0000 0 =   2147483648

int数据类型只能允许存储32位

2147483648 的 补码 有23位,会溢出。

所以:int的最大正整数位2147483648-1

参考资料来源:

百度百科——INT

百度网友ca560fe
2019-11-12 · TA获得超过2.3万个赞
知道答主
回答量:70
采纳率:100%
帮助的人:2.9万
展开全部

执行语句z=0.9+x/y后,z的值为1。

数据类型不一样,导致无法输出小数点后的值。x,y都是int整数型,那么做除运算后,得到的也是整数。在C语言中,整除除整数得到的是整数,整数除浮点数得到是浮点数,浮点数除浮点数得到的是浮点数。x/y=1,z=1+0.9,由于z 也是整数类型,1.9的小数部分会被自动截取,最后得到结果1。

扩展资料:

在C语言中,自动类型转换遵循以下规则:

1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。若两种类型的字节数不同,转换成字节数高的类型 ,若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型。

3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

4、char型和short型参与运算时,必须先转换成int型。

5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。 

参考资料来源:百度百科-C语言

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
四舍五不入6
高粉答主

2020-02-07 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2万
展开全部

int x=12,y=8,z;在其后后面执行语句

z=0.9+x/y;

x/y这个地方整除

取整数部分

x/y=12/8=1

结果为1.9,但是Z是整型,强制转化一下取整除部分

结果Z=1

扩展资料:

C语言isspace()函数:判断一个字符是否是空白符

C语言isprint()函数:判断一个字符是否是可打印字符

C语言islower()函数:判断一个字符是否是小写字母

C语言ldexp()函数:返回x乘以2的exponent次方(次幂)的值

nt isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0

int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0

参考资料来源:百度百科-c语言

参考资料来源:百度百科-C语言函数

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28b4182
推荐于2017-11-25 · TA获得超过7218个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1782万
展开全部
int x=12,y=8,z;在其后执行语句
z=0.9+x/y;
x/y这个是整除
取整数部分的
x/y=12/8=1
结果是1.9,但是Z是整型的,强制转化一下取整除部分
结果Z=1
更多追问追答
追问
从1.9转换为1时不需要四舍五入吗
追答
不用的,这个是强制取整.不是四舍五入
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-02-18 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4478万
展开全部
z=0.9+x/y
=0.9+12/8
=0.9+1
=1 //1.9赋给整型变量时,有一个隐式转换,去除小数后再赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式