如何区分'(单引号)和\'(转义单引号)

幸福的程序猿 2013-05-19 06:57:22
如题,'和\'都占一个字符,而且ascii都是39如何区分这两个字符呢?
...全文
419 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
baichi4141 2013-05-26
  • 打赏
  • 举报
回复
引用 13 楼 family086 的回复:
你明白请把问题说明白,你不把问题说明白又怎么能说明你明白。
我只想说你的态度有问题。不明白的是你,你该尽力去理解别人说的是什么,而不是摆出一副考官的态度“不赞同”别人的说法欢迎“讨论”,因为你没这个能力也没这个资格。 我明不明白不需要向你证明,也没兴趣跟你玩文字游戏,如果你真的觉得别人在求你明白这个问题,那你大概还处在被老师逼着学习的程度。
幸福的程序猿 2013-05-25
  • 打赏
  • 举报
回复
引用 8 楼 baichi4141 的回复:
[quote=引用 7 楼 family086 的回复:] [quote=引用 4 楼 baichi4141 的回复:] 楼主可以直接试试看,不加转义字符的单引号或双引号直接写在代码里,能不能编译过去 答案当然是编译不过去,因为没有转义字符,这两个符号在语言语法里是有各自用途的,编译器不会把它们看做“字符”或“字符串” 想想如果没有转义字符,那么是不是有些事情你做不到,你就明白转义字符是干嘛用的了
不赞同你的说法,在vs2010里编译器字符串"\''"长度是2,\'是当作一个字符看的,而且与'一模一样,欢迎继续探讨。[/quote] 爱信不信,反正不明白的是你不是我。[/quote] 你明白请把问题说明白,你不把问题说明白又怎么能说明你明白。
  • 打赏
  • 举报
回复
如题,'和\'都占一个字符,而且ascii都是39如何区分这两个字符呢? 在编译器中'',之间的表示是一个字符。 \',一般于用将 ' 赋值给某个变量。 如:char c1='a'; //表示将a这个字符赋值给c1 char c2='\''; //表示将' 这个字符赋值给c2
afairycell 2013-05-23
  • 打赏
  • 举报
回复
转义符其实也是一个字符,你都转为整数看下他们的ASC码吧
baichi4141 2013-05-23
  • 打赏
  • 举报
回复
引用 7 楼 family086 的回复:
[quote=引用 4 楼 baichi4141 的回复:] 楼主可以直接试试看,不加转义字符的单引号或双引号直接写在代码里,能不能编译过去 答案当然是编译不过去,因为没有转义字符,这两个符号在语言语法里是有各自用途的,编译器不会把它们看做“字符”或“字符串” 想想如果没有转义字符,那么是不是有些事情你做不到,你就明白转义字符是干嘛用的了
不赞同你的说法,在vs2010里编译器字符串"\''"长度是2,\'是当作一个字符看的,而且与'一模一样,欢迎继续探讨。[/quote] 爱信不信,反正不明白的是你不是我。
xiaohuh421 2013-05-23
  • 打赏
  • 举报
回复
首先, 你要明白为什么要有 \'这样的符号出现? 比如你的程序中需要判断查找一个串: "abcd'efg" 中是否有字母b. 可能你会写这样的程序 char buf[10] = "abcd'efg"; char ch = 'b'; for(int i=0; i<strlen(buf); ++i) { if( ch == buf[i]) { printf("找到字符b了"); } } 但是现在我想查找 ' 这个字符. 你可能会说, 简单, 把代码中那个b改成'即可. char buf[10] = "abcd'efg"; char ch = ''';//只修改这里 for(int i=0; i<strlen(buf); ++i) { if( ch == buf[i]) { printf("找到字符b了"); } } 这时你编译会发现编译不能通过, 说: error C2137: 空字符常量 因为'在这里已经有特殊作用了, 但我们又想使用这个符号怎么办呢. 这时转义字符就闪亮登场了 \' 就是说我想要'号, 但这个点号不要给我解释成特殊用途了. char ch='''; 修改成 char ch='\''; 这样说不知道能不能让楼主理解这个转义字符. 其它字符加\来转义也是同样的道理. 比如一个字符串中的双引号": char buf[] = "abcde\"1\"cdef"; printf输出后来实际上是: abcde"1"cdef
LuciferStar 2013-05-23
  • 打赏
  • 举报
回复
引用 6 楼 family086 的回复:
[quote=引用 5 楼 LuciferStar 的回复:] char *str="this is a "test"."; 如果不转义,以上语句报错。 这个只是给编译器看的。
单引号[/quote] har *str='this is a 'test'.'; 单引号就单引号。这个只是给语言的编译/解释程序看的。CPU处理的,还是'而非\';
幸福的程序猿 2013-05-22
  • 打赏
  • 举报
回复
引用 4 楼 baichi4141 的回复:
楼主可以直接试试看,不加转义字符的单引号或双引号直接写在代码里,能不能编译过去 答案当然是编译不过去,因为没有转义字符,这两个符号在语言语法里是有各自用途的,编译器不会把它们看做“字符”或“字符串” 想想如果没有转义字符,那么是不是有些事情你做不到,你就明白转义字符是干嘛用的了
不赞同你的说法,在vs2010里编译器字符串"\''"长度是2,\'是当作一个字符看的,而且与'一模一样,欢迎继续探讨。
幸福的程序猿 2013-05-22
  • 打赏
  • 举报
回复
引用 5 楼 LuciferStar 的回复:
char *str="this is a "test"."; 如果不转义,以上语句报错。 这个只是给编译器看的。
单引号
LuciferStar 2013-05-20
  • 打赏
  • 举报
回复
char *str="this is a "test"."; 如果不转义,以上语句报错。 这个只是给编译器看的。
baichi4141 2013-05-20
  • 打赏
  • 举报
回复
楼主可以直接试试看,不加转义字符的单引号或双引号直接写在代码里,能不能编译过去 答案当然是编译不过去,因为没有转义字符,这两个符号在语言语法里是有各自用途的,编译器不会把它们看做“字符”或“字符串” 想想如果没有转义字符,那么是不是有些事情你做不到,你就明白转义字符是干嘛用的了
baichi4141 2013-05-20
  • 打赏
  • 举报
回复
当直接在代码里写字符或字符串时,由于单引号双引号等等特殊符号在代码里原本就有其他作用,因此表示这些字符时就要在前面加上转义,当编译器编译代码时,它遇到\',就会知道“这是一个纯粹的单引号字符,而不是单引号在编程语言语法中的用途” 除此之外,'是一个字符,\'是两个字符,两者之间没有任何关系
幸福的程序猿 2013-05-19
  • 打赏
  • 举报
回复
引用 1 楼 china_jeffery 的回复:
\'是给计算机看的,'是给人看的
那计算机怎么区分呢?
china_jeffery 2013-05-19
  • 打赏
  • 举报
回复
\'是给计算机看的,'是给人看的

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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