啊哈磊_编程从这里起步

标题: 请问我这个有什么问题呢··· [打印本页]

作者: 小刀穿心    时间: 2013-12-6 13:14
标题: 请问我这个有什么问题呢···
#include <stdio.h>
int main ()
{
    int a,b,c,d,e;
    a=1.2;
    b=2.3;
    c=3.4;
    d=4.5;
    e=a+b+c+d
        printf("%d",e)
        sleep(10000);
    return o;



作者: rosynirvana    时间: 2013-12-6 13:44

  1. #include <stdio.h>
  2. #include <windows.h>

  3. int main()
  4. {
  5.   double a, b, c, d, e;
  6.   a = 1.2;
  7.   b = 2.3;
  8.   c = 3.4;
  9.   d = 4.5;
  10.   e = a+b+c+d;
  11.   printf("%f", e);
  12.   Sleep(10000);
  13.   return 0;
  14. }
复制代码
错误就自己对着找吧
作者: TTTTT    时间: 2013-12-6 21:30
rosynirvana 发表于 2013-12-6 13:44
错误就自己对着找吧

好快呀                        
作者: cad20020601    时间: 2013-12-6 21:38
rosynirvana 发表于 2013-12-6 13:44
错误就自己对着找吧

double怎么是用%f,不应该用%lf么
作者: rosynirvana    时间: 2013-12-6 22:33
cad20020601 发表于 2013-12-6 21:38
double怎么是用%f,不应该用%lf么

double是%f
float没有占位符,要隐式转换到double然后输出
作者: cad20020601    时间: 2013-12-6 22:42
rosynirvana 发表于 2013-12-6 22:33
double是%f
float没有占位符,要隐式转换到double然后输出

哦,懂了~~
作者: cad20020601    时间: 2013-12-7 10:00
cad20020601 发表于 2013-12-6 22:42
哦,懂了~~

哦等等,那既然double的占位符是%f,那么以前的%lf是怎么回事。。。
作者: rosynirvana    时间: 2013-12-7 11:35
cad20020601 发表于 2013-12-7 10:00
哦等等,那既然double的占位符是%f,那么以前的%lf是怎么回事。。。

printf没有%lf这个占位符,有疑问可以自己查ISO C文本
或许你会说编译器为什么不报错,因为编译器不是什么问题都会报错的
作者: 神一样的男人    时间: 2013-12-7 20:36
因为你的那几个a=1.2;b=2.3;c=3.4;d=4.5;所赋值的是小数,int应改为double





欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2