为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我写赋值为 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://img1.sycdn.imooc.com//57f21bab00019d9b12861170.jpg

正在回答

2 回答

首先你赋值为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。

2 回复 有任何疑惑可以回复我~
#1

Include9stdio_h0 提问者

非常感谢!
2016-10-05 回复 有任何疑惑可以回复我~
#2

Include9stdio_h0 提问者

不过 赋值000123,后面运行结果也是83呢
2016-10-05 回复 有任何疑惑可以回复我~
#3

超级喷喷 回复 Include9stdio_h0 提问者

不管00123还是000123都判定为八进制,实际上这都是不规范的的写法。所以你输入00123,000123,0000123...都一样。
2016-10-08 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信