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

#include<stdio.h>

int main()

{

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

int numtwo=(double)num;

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

return 0;

}

菠萝不困
浏览 2006回答 3
3回答

onemoo

赋值、初始化时会自动发生类型转换:等号右侧的类型会“临时”转换为等号左侧的类型,再进行赋值。注意前面的临时二字,这并不会改变等号右侧变量本身的类型和值。不是所有的类型间都可以进行类型转换的,如果类型间没有类型转换规则,就不会发生自动类型转换,且编译器会报错。浮点型转换为整型的规则大致上就是直接丢弃小数部分,保留整数部分。所以用浮点型值来初始化整型变量是合法的。

南木尧

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

慕运维8283692

#include<stdio.h>int main(){int num=2.5;     //定义浮点型变量num并赋值为2.5int numtwo=(double)num;printf("num的整数部分是%d\n",num);return 0;}是这样吧?float型自动转换为int型会有数据丢失,我的代码,结果是2。把2.5的小数部分直接舍去了
打开App,查看更多内容
随时随地看视频慕课网APP