为了账号安全,请及时绑定邮箱和手机立即绑定

这个程序第四行定义浮点型变量num并赋值为2.5的时候用int没问题吗,int不是整型嘛,虽然运行结果是对的,但还是不太明白,额

这个程序第四行定义浮点型变量num并赋值为2.5的时候用int没问题吗,int不是整型嘛,虽然运行结果是对的,但还是不太明白,额

C
菠萝不困 2015-07-13 16:13:16
#include<stdio.h>int main(){int num=2.5;     //定义浮点型变量num并赋值为2.5int numtwo=(double)num;printf("num的整数部分是%d\n");return 0;}
查看完整描述

3 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

赋值、初始化时会自动发生类型转换:等号右侧的类型会“临时”转换为等号左侧的类型,再进行赋值。注意前面的临时二字,这并不会改变等号右侧变量本身的类型和值。

不是所有的类型间都可以进行类型转换的,如果类型间没有类型转换规则,就不会发生自动类型转换,且编译器会报错。

浮点型转换为整型的规则大致上就是直接丢弃小数部分,保留整数部分。

所以用浮点型值来初始化整型变量是合法的。

查看完整回答
1 反对 回复 2015-07-13
?
南木尧

TA贡献1条经验 获得超1个赞

1楼时对的,肯定会发生,数据丢失,内部进行了强制转换

查看完整回答
1 反对 回复 2015-07-13
?
慕运维8283692

TA贡献31条经验 获得超17个赞

#include<stdio.h>

int main()

{

int num=2.5;     //定义浮点型变量num并赋值为2.5

int numtwo=(double)num;

printf("num的整数部分是%d\n",num);

return 0;

}

是这样吧?float型自动转换为int型会有数据丢失,我的代码,结果是2。把2.5的小数部分直接舍去了

查看完整回答
1 反对 回复 2015-07-13
  • 菠萝不困
    菠萝不困
    额,我打的缺了点,就是第六行是printf("num的整数部分是%d\n",numtwo);的话执行出来也是2啊...还是不明白怎么转换的0.0,第四行定义浮点型数据用int没问题吗
  • 菠萝不困
    菠萝不困
    额,明白啦,嘿嘿,谢啦
  • 3 回答
  • 0 关注
  • 2004 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信