029给变量赋值正确么?

在初教C语言课程的时候,有一道题,要给一个变量赋值,赋的值是029,虽然感觉不正确,但有感觉正确,会把0自动去掉变成十进制的29,结果并非想象。

在课后在代码中实现了一下,结果出问题了。
代码如下:

#include<stdio.h>
void main( )
{
     int a = 029;  //将029值赋给变量a
     printf("%d \n",a ) ; //输出变量a的值
}

编译结果显示:

Compiling...
test.c
D:\Program Files\Microsoft Visual Studio\MyProjects\demo\test.c(4) : error C2041: ***illegal digit '9' for base '8'***
执行 cl.exe 时出错.

test.obj - 1 error(s), 0 warning(s)

可以发现C语言中以0开头的数字,都会认为是八进制数,但该八进制数中出现了9,不在八进制0~7范围内,所以报错误。因此,在0开头的数字时需要注意,它表示的是八进制,既然是八进制就不能有值超过七的数,不然会报错。
我们现在将其改成027,试一下:

#include<stdio.h>
void main( )
{
     int a = 027;  //将027值赋给变量a
     printf("%d \n",a ) ; //输出变量a的值
}

结果发现编译正常,能够输出正确的结果。

结论:
以0开头的数字需要注意,它是指八进制,当其中有值超过7的,必然错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值