631156360 发表于 2014-8-24 15:56:54

新手改正

#include <stdio.h>

void main()
{
    double a,b,c;
        a=1;
        b=3;
        c=1/3*3;
       
        printf("%f\n",a);
        printf("%f\n",b);
        printf("%f\n",c);



}

帮忙看看哪错了,怎么改

漠水 发表于 2014-8-24 17:00:19

将c=1/3*3改成c=1/3.0*3才会保留小数
因为c=1/3=0,不保留小数,c=1/3.0才保留小数
不信不可以看看c=1*3/3=1

top 发表于 2014-8-24 19:17:55

#include <stdio.h>

void main()
{
    int a,b;
        double c;
      a=1;
      b=3;
      c=1.0/3.0*3.0;
      
      printf("%d\n",a);
      printf("%d\n",b);
      printf("%f\n",c);



}

methamphetamine 发表于 2014-8-24 23:34:00

#include <stdio.h>

int main()
{
    double a,b,c;
      a=1;
      b=3;
      c=1/3*3;
      
      printf("%f\n",a);
      printf("%f\n",b);
      printf("%f\n",c);
}

神奇的小布丁 发表于 2014-8-26 14:59:23

#include <stdio.h>
void main()
{
    double a,b,c;
      a=1;
      b=3;
      c=1.0/3*3;
      printf("%f\n%f\n%f\n",a,b,c);
}
嘻嘻,1/3=0而1.0/3才会得到一个浮点型的值:big
所涉及到的知识点:
双目运算符两边的运算类型必须保持一致!运算符两端的类型不一致时,要把两边转换成相同类型后进行运算!
一般会把“低型”转换为“高型”比如此处(要想得到一个实型数→_→ 1/3两边都是整型,要得到一个实型数,的应把他们转换为实型再进行运算!1.0是实型,3是整型,实型“高于”整型,因此系统会自动把3转换为实型再与1.0进行运算,就得到一个实型的结果了♪(′▽`))

风之残月 发表于 2014-8-31 21:27:25

本帖最后由 风之残月 于 2014-8-31 21:29 编辑

#include <stdio.h>

void main()
{
    double a, b, c;

    a = 1.0;
    b = 3.0;
    c = 1.0 / 3.0 * 3.0;
   
    printf("%f\n",a);
    printf("%f\n",b);
    printf("%f\n",c);
}

c = 1 / 3 * 3,1 / 3 = 0,最后0 * 3 = 0,输出时以浮点方式显示就是0.000000,浮点型变量最好以浮点型方式表示

h363062605 发表于 2014-8-31 23:42:56

为什么不把,浮点数,改为整数呢?      把duoble改为int         把%f改为%d

低调哥 发表于 2014-8-31 23:58:44

赋值还是按照规则比较好,还有那个除法和乘法的优先级是同等的,是不是要在后面加个小括号

1直很寂寞 发表于 2015-3-17 21:50:02

double 输出时最好用 %ld,
还有才c = 1 / 3.0 * 3
这样才对
页: [1]
查看完整版本: 新手改正