上个问题是我没问清楚,我再问一遍
书上讲给flaot类型赋值时,不加f时在编译时会警报(用的是vs c++6.0),但是我自己按照书上的程序,在我的电脑上打出来,编译后却没报错,这是为什么呢?
跟编译器支持的c语言版本规范有关系,现在最新的编译基本都支持C17,vs c++ 6.0应该是C99。
自己的vs是不是最新的,而且跟书本不一样的是ide提示警告但是不报错
猜测编译器不一样
在使用C语言学习时,当为float类型赋值时,不加f时在编译时会出现警告,但是在使用C++6.0编写程序时按照书上的程序没有加f却没有出现警告,这是因为在C中,在为一个小数赋值时,如果没有加上f,则默认为double类型,而浮点类型的内存表示法比较复杂,所以在不加f的情况下会出现警告,提醒程序员加上f明确类型。而在C++中,为了向下兼容C,可以在不加f的情况下直接将小数赋值给float类型变量,不会出现警告。在建议程序员在为浮点数赋值时,最好明确指定类型,以避免产生不必要的警告和错误。具体的解决方案可以按照如下代码示例操作:
float num1 = 3.14f; //加上f指定为float类型
float num2 = (float)3.14; //使用强制类型转换将double类型转换为float类型