为什么最后输出的numOne跟实际差距这么大,而且有时候还会是负整数,是哪里错了?

来源:2-9 强制类型转换

qq_无我_1

2018-03-30 15:56

#include <stdio.h>

int main()

{

    double numOne = 2.5;      //定义浮点型变量num并赋值为2.5

    int numTwo = (int)numOne;

    printf("numOne的整数部分是%d\n",numOne);

    printf("numTwo的小数部分是%f\n",numTwo);

    return 0;

}



hello.c: In function 'main':

hello.c:6:38: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=]

     printf("numOne的整数部分是%d\n",numOne);

                                      ^

hello.c:7:38: warning: format '%f' expects argument of type 'double', but argument 2 has type 'int' [-Wformat=]

     printf("numTwo的小数部分是%f\n",numTwo);

                                      ^

numOne的整数部分是1218162008

numTwo的小数部分是2.500000


写回答 关注

3回答

  • qq_千影_0
    2018-04-03 15:56:45

    反了,%d才是整数,,%f是6位小数。。。

    qq_千影_...

    然后你问D的小数部分。。。。,d就2个字节

    2018-04-03 15:57:53

    共 1 条回复 >

  • T1令剧情发展
    2018-03-30 16:25:12

    我不知道对不对,但是这样改了以后应该是你想输出的

    #include <stdio.h>

    int main()

    {

        double numOne = 2.5;      //定义浮点型变量num并赋值为2.5

        int numTwo = (int)numOne;

        printf("numOne的小数部分是%f\n",numOne);

        printf("numTwo的整数数部分是%d\n",numTwo);

        return 0;

    }


  • qq_淡墨文竹_0
    2018-03-30 16:12:53

        要注意%d是输出带符号的十进制整数,因为你原本的numOne是小数,所以换算成整数则是不一致,还会带有符号

      %f 是输出6位小数    可以再去看一下格式化输出语句的部分


    正确写法应该是


    printf("numOne的整数部分是%f\n",numOne);

     printf("numTwo的小数部分是%d\n",numTwo);


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926212 学习 · 20797 问题

查看课程

相似问题