如题,'和\'都占一个字符,而且ascii都是39如何区分这两个字符呢?

解决方案 »

  1.   

    char *str="this is a "test".";
    如果不转义,以上语句报错。
    这个只是给编译器看的。
      

  2.   

    如题,'和\'都占一个字符,而且ascii都是39如何区分这两个字符呢?在编译器中'',之间的表示是一个字符。
    \',一般于用将 ' 赋值给某个变量。如:char c1='a'; //表示将a这个字符赋值给c1
    char c2='\'';   //表示将' 这个字符赋值给c2
      

  3.   

    单引号
    har *str='this is a 'test'.';
    单引号就单引号。这个只是给语言的编译/解释程序看的。CPU处理的,还是'而非\';
      

  4.   

    首先, 你要明白为什么要有 \'这样的符号出现?比如你的程序中需要判断查找一个串:  "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
      

  5.   

    转义符其实也是一个字符,你都转为整数看下他们的ASC码吧