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

为什么我写赋值为 000123,后的结果是83呀

#include <stdio.h>

int main()

{

    char c = 00123;

    int n ;        //将c赋值给n

    float f ;      //将c赋值给f

    double d;  //将c赋值给d

    n=c;

    f=n;

    d=f;

    printf("%d\n",n);

    printf("%f\n",f);

    printf("%lf\n",d);

    return 0;

}

http://img.mukewang.com/57f21bab00019d9b12861170.jpg

提问者:Include9stdio_h0 2016-10-03 16:50

个回答

  • 超级喷喷
    2016-10-03 17:26:58
    已采纳

    首先你赋值为00123不是000123。然后char c表示定义一个字符型变量c ,初值为00123。在C语言中,八进制数通常前面加一个0,比如,00 05 027等,而你的00123系统判定为八进制。3*8^0+2*8^1+1*8^2+0*8^3=83。

  • 程序卓
    2016-10-03 17:31:12

    char型数据类型是用来存储单个字符的,这里00123是S的ASCII的8进制表示,所以你赋值的是S而不是00123