\0101 和 \101 是不是都是八进制转义?

wang37921 2010-05-20 12:06:36

#include <stdio.h>
int main()
{
int a;
a = 65;
printf("%d\n", a);
a = '\101';
printf("%d\n", a);
a = '\0101';
printf("%d\n", a);
a = '\x41';
printf("%d\n", a);
return 0;
}

\0101 和 \101 是不是都是八进制转义?
| |
| |
2097 65
咋不一样那。。。
...全文
1018 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArtiFly2000 2010-05-20
  • 打赏
  • 举报
回复
按照C语言的规则,八进制转义字符最多三位,三位之后的算其他字符

那么'\0101'实际上是两个字符'010','1'
这两个字符转换成16进制分别为 0x8和0x31
所有打印出来的整数a的值为0x831,十进制就是2097

如果编译器检查足够强大的话,这里应该报错,因为'\0101'已经不是一个字符了
mstlq 2010-05-20
  • 打赏
  • 举报
回复
2097是8*256+49
8是八进制010
49是'1'

说完……
zdl110110 2010-05-20
  • 打赏
  • 举报
回复
用turboC发现a='\0101'报错。
wang37921 2010-05-20
  • 打赏
  • 举报
回复
--!我太green了。。。。
‘1’字符。。。
不好意思了~
结帐~
wang37921 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 artifly2000 的回复:]
按照C语言的规则,八进制转义字符最多三位,三位之后的算其他字符

那么'\0101'实际上是两个字符'010','1'
这两个字符转换成16进制分别为 0x8和0x31
所有打印出来的整数a的值为0x831,十进制就是2097

如果编译器检查足够强大的话,这里应该报错,因为'\0101'已经不是一个字符了
[/Quote]
学习了~这个是看c primer plus时,里面的一句话~art的解释很到位~谢谢~
但是还有有点不清楚~

那么'\0101'实际上是两个字符'010','1'
这两个字符转换成16进制分别为 0x8和0x31

八进制010是0x8
但是1怎么转成0x31的?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧