打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c语言常见错误
d:\microsoft visual studio\study\习题4.5答案验证.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'float'
d:\microsoft visual studio\study\习题4.5答案验证.cpp(5) : warning C4305: 'initializing' : truncation from 'const double' to 'float'
#include<stdio.h>
void main()
{
int a=5,b=7;
float x=67.8564,y=-789.124;   \\被警告的地方。
char c='A';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
在百度知道上搜到类似问题:
例题是这样的,我用的VC++6.0,运行时就出现在条警告!float 是单精度浮点型 double是双精度浮点型.这些我知道,但是这题明明定义的float,关double叼事..实在不明白?
#include<iostream>
using namespace std;
int main()
{float x;int i;
x=3.6;i=(int)x;
cout<<"x="<<x<<",i="<<i<<endl;
return 0;}
回答是这样的:在 C 语言中,如果不指定数据类型,那么小数常量会被认为是 double 类型的。
因此在你的初始化中
x = 3.6;
这一句,x 是 float 类型的,但是 3.6 是 double 类型的,由于它是常量,所以编译器称为 const                                         double。double 是不能隐式转换为 float 的。
对这段回答,我明白,可是我的是直接在指定数据类型后赋值的(也就是初赋值):float x=67.8564,y=-789.124;
而不是这样:float x,y;
x=67.8564;
y=-789.124;
难道像我这样的初赋值中,系统也要把小数认为是double型的?那前面的float不是等于没意义了吗?更何况这不是个常量啊!
求各位高手解答,谢谢!!:s007:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Android NDK 开发之旅 1--C 语言基础--基本数据类型
C/C :基本语法看这一篇就够了
计算机程序设计基础(C语言)第2章 C语言基础
C语言隐式类型转换规则
C语言指针变量的运算
C 语言基础来喽(每一行的结尾都要用分号进行结束它表示一个语句的结束如果忘记或者会略分号会被编译器提示错误)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服