1939118199 发表于 2013-10-9 07:17:16

C语言的问题

#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.
这是错在那里了呀

福禄娃娃 发表于 2013-10-9 08:08:56

第三行,b = a + 20少了一个分号
b = a + 20;
float a, b;可改为double a, b;这样在输出的时候就不会损失精度。

devotedtoc 发表于 2013-10-9 13:04:43

错误:第7行少了一个分号;
         把 floata, b;改为doublea, b;

rhwcl 发表于 2013-10-9 13:48:07

同意楼上观点,补充说明,如果用float形式,%f要改为%lf。

1939118199 发表于 2013-10-9 17:40:37

福禄娃娃 发表于 2013-10-9 08:08 static/image/common/back.gif
第三行,b = a + 20少了一个分号
b = a + 20;
float a, b;可改为double a, b;这样在输出的时候就不会损失 ...

谢谢版主 听君一席话 胜艹1天逼啊:lol:

565123 发表于 2013-10-10 01:06:10

楼上说的并不正确,不是说double就不会丢失精度,而是丢失的幅度较小
会有第一个warning是因为a=123456.789e5f; //f加在后面,编译器就不会报一个警告
而第二个错误就是少了分号。

残II 发表于 2013-10-10 19:56:27

565123 发表于 2013-10-10 01:06 static/image/common/back.gif
楼上说的并不正确,不是说double就不会丢失精度,而是丢失的幅度较小
会有第一个warning是因为a=123456.78 ...

为什么加个f就不会报错呢,求解,
我是菜鸟

565123 发表于 2013-10-12 21:35:04

因为加了f,编译器就知道那是一个float,而不是一个double

浩fly 发表于 2013-10-14 11:47:56

加个f相当于进行了强制转换了,就不会在报错 了

wiegand429 发表于 2013-10-14 20:24:56

warning C4305: '=' : truncation from 'const double ' to 'float '
error C2146: syntax error : missing ';' before identifier 'printf'
就是楼上说的情况

风之残月 发表于 2013-10-15 09:12:09

b=a+20 这里少了 ";"
float a,b 改为 double a,b

平平常常丶 发表于 2013-10-15 09:19:07

福禄娃娃 发表于 2013-10-9 08:08 static/image/common/back.gif
第三行,b = a + 20少了一个分号
b = a + 20;
float a, b;可改为double a, b;这样在输出的时候就不会损失 ...

对啊,少个分号。
页: [1]
查看完整版本: C语言的问题