| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1136 人关注过本帖
标题:求助,关于转义字符
取消只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
求助,关于转义字符
今天遇到这样一个程序
#include "stdio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal %d \n",var);
printf("\40:static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{int i;
  for(i=0;i<3;i++)
   varfunc();
}
别的都能看懂,只是第六,七行括号内的‘\40:’处看不懂,我运行了一下,发现':'是正常输出,‘\40’输出为一个空格,不明白是什么意思,ASC编码历40是‘(’,并不是空格,我又尝试着把40换成别的数字,则输出了不同符号,都是ASC编码里的,但编号和我输入的数字对不上,也没有发现什么规律。
求解答,求帮助!!!!!!!!!!!!!!!!!!!
万谢!
搜索更多相关主题的帖子: include 
2012-11-02 14:08
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
求助 ,帮帮忙啊,众位大神,战神,C神们。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 14:28
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 4楼 wp231957
感谢4楼的兄弟当我解除迷惑,虽然我脑袋里的疑惑比看这封回帖之前要多得多,但那是关于数字8进制16进制的,所以现在停下手中的学习,先把数字进制弄明白再说,无以为谢,20分奉上。
再次感谢。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 14:48
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
哎 研究好久,好像是研究通了,可又有了新的困惑,比方说给一个数字23,怎么判断他是八进制数还是十进制数?
还有printf("\40");和printf("%c",40);输出的结果也不一样看来,前者是按8进制算的ASC码后者按10进制算的ASC码。
阿弥陀佛:处处小心啊,什么时候才能写程序信手拈来呢,路途遥远呀

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 15:55
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
版主果然威武,回一句话我纠结了20多分钟才明白怎么回事,原来我还没有学到那,typedef要到第9章才有,我才看到第8章。
哎,差距呀!要把差距转化为动力。。。。。。。。。。。。。。。
前路漫漫,慢慢走。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 16:41
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
版主,你越说我越糊涂了,看来要先把指针缓一缓,先研究这个type了。
昨天还为写成了一个小程序而沾沾自喜,今天就发现自己如此无知,要靠翻书才能听懂别人的话,甚至还理解错了,郁闷纠结,无奈,无语。。。。。。。。。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 17:29
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 11楼 TonyDeng
版主,请原谅,我是自学C,一切全靠自悟,所以所问的问题可能有点低能
是不是这个意思,转义字符后面跟的八进制字符都用三位数,我原理看到的那个程序,\40的写法是错误的,应该是\040 ,而你所说的可type是不是指%c这种形式?至于你说的只是圆括号用不着转义字符是不是说有时候程序太复杂为避免出现错误才用转义字符后面加八进制数的情况

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 18:07
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
谭浩强著
转义字符
除了以上形式的字符外C还允许用一种特殊形式的字符量,就是以字符\卡头的字符序列。例如,前面已经遇到过的,在printf函数中的‘\n’它代表“换行”符。‘\t’代表将输出的位置跳到下一个tab位置(制表位置),一个tab位置为8列。这是一种在屏幕上无法显示的“控制字符”,在程序中也无法用一个一般形式的字符来表示,只能采用这样的特殊形式来表示。
    常用的以“\”开头的特殊字符见表3.1.
                       表3.1  转义字符及其作用
转义字符                        输出结果
\'          一个单撇号(‘)     具有此八进制码的字符
\“         一个双撇号(”)     输出此字符
\?         一个问号(?)       输出此字符
\\          一个反斜线(\)      输出此字符
\a          警告(alert)        产生声音或视觉信号
\b          退格(backspace)    将当前位置后退一个字符
\f          换页(form feed)    将当前位置移到下一页的开头
\n          换行                 将当前位置移到下一行的开头
\r          回城(carriage return) 将当前位置移到笨行的开头
\t          水平制表符            将当前位置移到下一个tab位置
\v          垂直制表符           将当前位置移到下一个垂直制表对齐点
\0\00\000     与该八进制字符     
其中0代表一个 对应的ASCII字符      与该八进制码对应的字符
八进制数字
\xh[h...]其中  与该十六进制码对应  与该十六进制码对应的字符
h代表一个十六  的ASCII字符
进制数字
  表3.1列出的字符称为“转义字符”,意思是将“\”后面的字符转换成另外的意义。如“\n
”中的“n”不代表字母n而作为“换行”符。
  表3.1中倒数第2行是一个以八进制数表示的字符,例如’\101’代表八进制数101的ASCII字符,即‘A’,(八进制数101相当于十进制数65,从附录B可以看到ASCII码(十进制数)为65的字符是大写字母‘A’)。‘\012’代表八进制数12(即十进制数的10)的ASCII码所对应的字符“换行”符。表3.1中倒数第1行是一个以十六进制数表示的ASCII字符,如‘\x41’代表十六进制数41的ASCII字符,也是‘A’(十六进制数41相当于十进制数65)。用表3.1中的方法可以表示如何可显示的字母字符、数字字符、专用字符图形字符和控制字符。如‘\033’或‘\x1B’代表ASCII代码为27的字符,即ESC控制符。‘\0’或‘\000’是代表ASCII码为0的控制字符,即“空操作”字符,它常用在字符串中。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 23:37
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
用手敲了一遍,边敲边琢磨,懂了一些,可有的地方还糊涂
比如表格倒数第2行\00也代表八进制数字那么我原来看的那个程序里\40的写法岂不是正确的,系统没必要补成\040啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-02 23:54
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
不知道这样理解对不对:
\40很不好理解,可能是八进制的\040少了开头的0,也可以是十六进制的\x40少了开头的x,但不管怎么哪种情况都少了标致性的字符,也就是说理解成八进制和十六进制都不和法,但是十进制又没有在前面加'\'的,所以我用的编译系统就“联想”了一种看似合理的解释。可能这也正是那段程序编写者有意为之,所以那段代码执行之后看不出异样。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-03 00:07
快速回复:求助,关于转义字符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013088 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved