zoukankan      html  css  js  c++  java
  • 第14课 单引号和双引号

    单引号和双引号:

    下面的程序片段合法吗?

    示例程序:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5 
     6     char* p1 =  1 ;
     7     char* p2 = '1';
     8     char* p3 = "1";
     9 
    10     printf("%s, %s, %s", p1, p2, p3);
    11     
    12     printf('
    ');
    13     printf("
    ");
    14     
    15     return 0;
    16 }

    编译运行结果如下:

    小贴士:

    上面程序产生错误的原因:

    低于0x08048000的地址是不能随便访问的。

    printf(' ')会产生段错误,因为printf把' '的aisc码当成了地址。aisc码为0x00000010。

    如下:

    混淆概念的代码示例:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5 
     6     char c = " ";
     7     
     8     while( (c == "	") || (c == " ") || (c == "
    ") )
     9     {
    10         scanf("%c", &c);
    11     }
    12     
    13     return 0;
    14 }

    编译运行结果如下:

    while循环没有得到执行。

    第6行将字符串的地址赋值给了c。

    赋值给c的地址值发生了截断,所以第8行的判断中c的值是不会等于" "字符串的地址的。

    将程序中的双引号改为单引号就可以得到预期的效果了。

    小结:

      单引号括起来的单个字符代表整数

      双引号括起来的字符代表字符指针

      C编译器接受字符和字符串的比较,无任何意义

      C编译器允许字符串对字符变量赋值,只能得到错误

  • 相关阅读:
    215. 数组中的第K个最大元素
    c++集合的操作
    201. 数字范围按位与
    150. 逆波兰表达式求值
    二叉树的遍历算法
    144. 二叉树的前序遍历
    139. 单词拆分 DP
    131. 分割回文串
    695. 岛屿的最大面积 DFS
    leetcode 200. 岛屿数量 DFS
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9535392.html
Copyright © 2011-2022 走看看