关于字符转换求帮助

qq_29648169 2017-07-26 08:17:44
如图。把字符A转化成八进制打印出来是0101,但是反过来char character = '\0101' 打印出来是数字1而不是A,为什么呀
...全文
557 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moyiii 2017-07-28
  • 打赏
  • 举报
回复
http://blog.csdn.net/ygdxt/article/details/54024678 这个文章研究的挺深,可以看看/ddd的问题
自信男孩 2017-07-27
  • 打赏
  • 举报
回复
引用 11 楼 fight_in_dl 的回复:
引用
谢谢。很好的解决我的问题
不客气,共同学习。 可以的话,请结题散分好吗^_^
#include <stdio.h>


int  main()
{
    char a = 'A';
    printf("%o\n", a);
    char character = 0101;
    printf("%c\n", character);
    character = 0x41;
    printf("%c\n", character);

    return 0;
}
八进制标识不是要这样吗? 个人认为不需要沿着楼主的想去去分析,因为楼主的认为和思路可能本身就是不对的。
自信男孩 2017-07-27
  • 打赏
  • 举报
回复
引用 6 楼 qq_29648169 的回复:
[quote=引用 5 楼 战在春秋的回复:]
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
你好,谢谢解答。我知道写'\101'是能够正确输出的,我的疑问就是为什么写'\0101'就不行呢,很纳闷。麻烦了。[/quote] 你见过八进制还加''单引号的吗? 八进制在C语言里是不是这样写:
#include <stdio.h>


int  main()
{
    char a = 'A';
    printf("%o\n", a);
    char character = 0101;
    printf("%c\n", character);
    character = 0x41;
    printf("%c\n", character);
    return 0;
}
0前缀说明后面的数据是八进制形式,0x前缀的数据,说明是16进制。 不需要加''
冬南风 2017-07-27
  • 打赏
  • 举报
回复
引用 8 楼 qq_29648169 的回复:
[quote=引用 3 楼 冬南风的回复:][quote=引用 2 楼 T20091 的回复:] \0101 前面的\去掉
单引号也去掉。。。[/quote] 也不是去掉单引号呀。标准写法就是这样的。比如蜂鸣是'\a',是写成'\007'的[/quote] 你就不能试下?写法多样
自信男孩 2017-07-27
  • 打赏
  • 举报
回复
引用 16 楼 qq_29648169 的回复:
[quote=引用 13 楼 自信男孩的回复:][quote=引用 6 楼 qq_29648169 的回复:] [quote=引用 5 楼 战在春秋的回复:]
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
你好,谢谢解答。我知道写'\101'是能够正确输出的,我的疑问就是为什么写'\0101'就不行呢,很纳闷。麻烦了。[/quote] 你见过八进制还加''单引号的吗? 八进制在C语言里是不是这样写:
#include <stdio.h>


int  main()
{
    char a = 'A';
    printf("%o\n", a);
    char character = 0101;
    printf("%c\n", character);
    character = 0x41;
    printf("%c\n", character);
    return 0;
}
0前缀说明后面的数据是八进制形式,0x前缀的数据,说明是16进制。 不需要加''[/quote] 你好,你的写法也是可以的,谢谢回复[/quote] 但是加''的八进制数值能标识超过255的数吗?
qq_29648169 2017-07-27
  • 打赏
  • 举报
回复
引用 11 楼 战在春秋的回复:
引用
谢谢。很好的解决我的问题
不客气,共同学习。 可以的话,请结题散分好吗^_^
好的。共同学习共同进步
qq_29648169 2017-07-27
  • 打赏
  • 举报
回复
引用 13 楼 自信男孩的回复:
[quote=引用 6 楼 qq_29648169 的回复:] [quote=引用 5 楼 战在春秋的回复:]
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
你好,谢谢解答。我知道写'\101'是能够正确输出的,我的疑问就是为什么写'\0101'就不行呢,很纳闷。麻烦了。[/quote] 你见过八进制还加''单引号的吗? 八进制在C语言里是不是这样写:
#include <stdio.h>


int  main()
{
    char a = 'A';
    printf("%o\n", a);
    char character = 0101;
    printf("%c\n", character);
    character = 0x41;
    printf("%c\n", character);
    return 0;
}
0前缀说明后面的数据是八进制形式,0x前缀的数据,说明是16进制。 不需要加''[/quote] 你好,你的写法也是可以的,谢谢回复
战在春秋 2017-07-27
  • 打赏
  • 举报
回复
引用
谢谢。很好的解决我的问题
不客气,共同学习。 可以的话,请结题散分好吗^_^
qq_29648169 2017-07-27
  • 打赏
  • 举报
回复
引用 13 楼 自信男孩的回复:
[quote=引用 6 楼 qq_29648169 的回复:] [quote=引用 5 楼 战在春秋的回复:]
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
你好,谢谢解答。我知道写'\101'是能够正确输出的,我的疑问就是为什么写'\0101'就不行呢,很纳闷。麻烦了。[/quote] 你见过八进制还加''单引号的吗? 八进制在C语言里是不是这样写:
#include <stdio.h>


int  main()
{
    char a = 'A';
    printf("%o\n", a);
    char character = 0101;
    printf("%c\n", character);
    character = 0x41;
    printf("%c\n", character);
    return 0;
}
0前缀说明后面的数据是八进制形式,0x前缀的数据,说明是16进制。 不需要加''[/quote] 也许你的是正确的。但是我也可以告诉你我和楼上朋友的写法是没有问题的。你可以翻阅各种书籍查看,转义字符就是要这样写的
qq_29648169 2017-07-26
  • 打赏
  • 举报
回复
引用 9 楼 战在春秋的回复:
引用
麻烦了
问题比较隐蔽 关键点还是要记住八进制数表示是 \... \0101 中 010会解释成8进制,其对应的十进制为 8 ,查一下ascii表可知其对应 退格键(属于不可见字符)。 \0101 这样处理后的结果就是输出退格1,显示在屏幕上就是1 您可以换成\0105,\0109试试。 ascii表请参考: http://ascii.911cha.com/
谢谢。很好的解决我的问题
战在春秋 2017-07-26
  • 打赏
  • 举报
回复
引用
麻烦了
问题比较隐蔽 关键点还是要记住八进制数表示是 \... \0101 中 010会解释成8进制,其对应的十进制为 8 ,查一下ascii表可知其对应 退格键(属于不可见字符)。 \0101 这样处理后的结果就是输出退格1,显示在屏幕上就是1 您可以换成\0105,\0109试试。 ascii表请参考: http://ascii.911cha.com/
qq_29648169 2017-07-26
  • 打赏
  • 举报
回复
引用 3 楼 冬南风的回复:
[quote=引用 2 楼 T20091 的回复:] \0101 前面的\去掉
单引号也去掉。。。[/quote] 也不是去掉单引号呀。标准写法就是这样的。比如蜂鸣是'\a',是写成'\007'的
qq_29648169 2017-07-26
  • 打赏
  • 举报
回复
引用 2 楼 冬南风的回复:
\0101 前面的\去掉
你好谢谢解答,但不是\的事哦
qq_29648169 2017-07-26
  • 打赏
  • 举报
回复
引用 5 楼 战在春秋的回复:
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
你好,谢谢解答。我知道写'\101'是能够正确输出的,我的疑问就是为什么写'\0101'就不行呢,很纳闷。麻烦了。
战在春秋 2017-07-26
  • 打赏
  • 举报
回复
引用
为什么呀
八进制表示是 \... 注意观察,题目中之所以输出0101是因为格式字符串有一个 # ,它的作用如下:
引用
For o, x, X types, the text 0, 0x, 0X, respectively, is prepended to non-zero numbers.
翻译过来的意思就是如果是非零数,会在数字前放一个前置0。 我翻译得不好,你看一下英文原文应该能理解。 想要达到你期望的效果,应该用以下代码:
void main()
{
	char a = 'A';
	printf("%o\n", a);
	char character = '\101';
	printf("%c\n", character);
}
您可以运行这段代码,对比一下题目的写法 。
qq_37732089 2017-07-26
  • 打赏
  • 举报
回复
haoahoahaohaoahoa
冬南风 2017-07-26
  • 打赏
  • 举报
回复
引用 2 楼 T20091 的回复:
\0101 前面的\去掉
单引号也去掉。。。
冬南风 2017-07-26
  • 打赏
  • 举报
回复
\0101 前面的\去掉
qq_29648169 2017-07-26
  • 打赏
  • 举报
回复
谢谢大佬们了!!!!

69,382

社区成员

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

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