问答详情
源自:2-9 强制类型转换

2-9有疑问

#include <stdio.h>

int main()

{

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

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

    return 0;

}

这段代码是正确的。

但是下面这段

#include <stdio.h>

int main()

{

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

    int num =(int) num

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

    return 0;

}

是错的。

所以我有些问题:下面这段是我看过教程之后写出来的,但是是错的。

但我又不知道错在哪,我有几个猜测:

1、num这个变量名我用了两次,整型一次,双精度实数型一次。所以我想是不是因为变量名混乱所以报错,但是我学了一下其他人,他们把要输出的量定义成num1。但是我还是错了。

2、我看不太懂教程里说的(数据类型)(表达式)这个形式

表达式要加括号,但是在例子中的temptwo没加括号,是因为字符不需要加括号吗?还是只有需要计算的公式才需要加括号?

求大佬耐心解答!!!

提问者:polx 2021-08-02 11:07

个回答

  • 慕村5195721
    2021-10-30 19:53:11

    改成如下试试

    int num2 =(int) num

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


  • weixin_慕圣0114720
    2021-08-13 17:07:11

    第五行忘加;

  • 慕丝4447238
    2021-08-02 15:02:23

    猜测一对的,但num1是这样改
    #include <stdio.h>
    int main()
    {    
        double num = 2.5;//定义浮点型变量num并赋值为2.5    
        int num1 =(int) num;    
        printf("num的整数部分是%d\n",num1); //(int)num的整数给到了num1     
        return 0;
    }

    或者改成(不用另外设一个中间变量名)

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

  • 慕丝4447238
    2021-08-02 15:02:10

    猜测一对的,但num1是这样改
    #include <stdio.h>
    int main()
    {    
        double num = 2.5;//定义浮点型变量num并赋值为2.5    
        int num1 =(int) num;    
        printf("num的整数部分是%d\n",num1); //(int)num的整数给到了num1     
        return 0;
    }

    或者改成(不用另外设一个中间变量名)

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