问答详情
源自:2-8 自动类型转换

看看这两段代码 我用VC++6.0 编译出来都一样???

#include <stdio.h>
int main()
{
    char c = 'a';
    int n = c ;        //将c赋值给n
    float f = n ;      //将c赋值给f
    double d = f ;     //将c赋值给d
    printf("%d\n",n);
    printf("%f\n",f);
    printf("%lf\n",d);
    return 0;   
}


#include <stdio.h>
int main()
{
    char c = 'a';
    int n = c ;       //将c赋值给n
    float f =c ;      //将c赋值给f
    double d =c ;     //将c赋值给d
    printf("%d\n",n);
    printf("%f\n",f);
    printf("%lf\n",d);
    return 0;   
}

提问者:__0 2015-03-05 17:08

个回答

  • onemoo
    2015-03-06 08:54:50

    你是想问为什么直接用c来赋值也没错吗?

    char也属于整型。

    用整型给浮点型变量赋值时,整型会先转换为浮点型(还有一些细则,但基本是这个逻辑)。

    所以不管你用int还是char来做初值,它们都会转成浮点型。转换后浮点数的整数部分就是整型的数值。

    所以你这两个程序的输出一样。