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

来源:2-8 自动类型转换

Include9stdio_h0

2016-10-03 16:50

#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

写回答 关注

2回答

  • 超级喷喷
    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。

    超级喷喷 回复Includ...

    不管00123还是000123都判定为八进制,实际上这都是不规范的的写法。所以你输入00123,000123,0000123...都一样。

    2016-10-08 20:19:15

    共 3 条回复 >

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

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

C语言入门

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

926021 学习 · 20793 问题

查看课程

相似问题