鱼C论坛

 找回密码
 立即注册
查看: 3461|回复: 11

C语言的问题

[复制链接]
发表于 2013-10-9 07:17:16 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
void main()
{
  float a,b;
  a=123456.789e5;
  b=a+20
  printf("%f\n",a);
  printf("%f\n",b);
}

2.c
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\admin\2.c(5) : warning C4305: '=' : truncation from 'const double ' to 'float '
C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\admin\2.c(7) : error C2146: syntax error : missing ';' before identifier 'printf'
Error executing cl.exe.
这是错在那里了呀

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-9 08:08:56 | 显示全部楼层
第三行,b = a + 20少了一个分号
b = a + 20;
float a, b;可改为double a, b;这样在输出的时候就不会损失精度。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-9 13:04:43 | 显示全部楼层
错误:第7行少了一个分号;
         把 float  a, b;  改为  double  a, b;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-9 13:48:07 | 显示全部楼层
同意楼上观点,补充说明,如果用float形式,%f要改为%lf。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-9 17:40:37 | 显示全部楼层

谢谢版主 听君一席话 胜艹1天逼啊:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-10 01:06:10 | 显示全部楼层
楼上说的并不正确,不是说double就不会丢失精度,而是丢失的幅度较小
会有第一个warning是因为a=123456.789e5f; //f加在后面,编译器就不会报一个警告
而第二个错误就是少了分号。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-10 19:56:27 | 显示全部楼层
565123 发表于 2013-10-10 01:06
楼上说的并不正确,不是说double就不会丢失精度,而是丢失的幅度较小
会有第一个warning是因为a=123456.78 ...

为什么加个f就不会报错呢,求解,
我是菜鸟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-12 21:35:04 | 显示全部楼层
因为加了f,编译器就知道那是一个float,而不是一个double
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-14 11:47:56 | 显示全部楼层
加个f相当于进行了强制转换了,就不会在报错 了
搜狗截图_2013-10-14_11-45-31.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-14 20:24:56 | 显示全部楼层
warning C4305: '=' : truncation from 'const double ' to 'float '
error C2146: syntax error : missing ';' before identifier 'printf'
就是楼上说的情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-15 09:12:09 | 显示全部楼层
b=a+20 这里少了 ";"
float a,b 改为 double a,b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-15 09:19:07 | 显示全部楼层
福禄娃娃 发表于 2013-10-9 08:08
第三行,b = a + 20少了一个分号
b = a + 20;
float a, b;可改为double a, b;这样在输出的时候就不会损失 ...

对啊,少个分号。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表