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

这两个的结果不一样,为什么?

正确答案

#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;   
}

得到的结果是
97
97.000000
97.000000

另一个

#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;   
}

得到的结果是
99
99.000000
99.000000

区别在于  c   和    'c'   有什么不一样?

 

提问者:InnoFang 2015-08-19 18:08

个回答

  • Perona
    2015-08-19 18:16:45
    已采纳

    不加引号的是变量。加引号的是字符。

    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);

    这里赋的值都是变量c的值字符a。

     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);

    这里除了变量c的值是字符a,其他的变量赋的值都是字符c。