C语言强制类型转换结果异常

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

arafatttttt3416744

2016-05-30 08:27

#include <stdio.h>
int main()
{
    double num = 2.5;      //定义浮点型变量num并赋值为2.5
    (int)num;
    printf("num的整数部分是%d\n", num);  
    return 0;
}

其结构为什么是-748043384 而不是2 

ps:经过重试 结果为随机数

写回答 关注

3回答

  • 越飞越高
    2016-11-10 13:28:26

    没有正确把浮点型num的值转换成整型,导致系统无法识别,使输出num的值为系统中随机的值

    http://img.mukewang.com/5824057600010e1f09680570.jpg

  • 3173hehehe
    2016-05-30 09:21:41

    #include<stdio.h>

    int main(void)

    {

        double num=2.5;

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

        return 0;

    }

    int num;只是在这一个声明中将num的整数部分显示出来了,但是并不改变本身num的值。

    arafat...

    但是我的做法为什么会出现num等于随机8位数的情况,比较疑惑

    2016-05-30 10:34:32

    共 1 条回复 >

  • 慕标3623676
    2016-05-30 09:13:18

    #include <stdio.h>

    int main()

    {

        double num = 2.5; 

        int j=(int)num;

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

        return 0;

    }

    强制转换是把原值转换后赋给另一个变量  而你最后的输出语句还是输出num 还用的是%d可能会不正确  我做了以上调整 系统可以按着你的要求输出了    我也是初学者  一起研究 愚见勿喷

    arafat... 回复夜风3436...

    对,每次都不一样

    2016-05-31 09:59:35

    共 5 条回复 >

C语言入门

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

926209 学习 · 20797 问题

查看课程

相似问题