• 关于运算符结合顺叙的一些小探索


    早上起来拿手机耍了一下,突然发觉一篇关于运算符结合顺叙的贴子,关键是有一部分我不是很懂。没办法,自己动手,先看看代码:

     1 #include <stdio.h>
     2  
     3  int main(void)
     4  {
     5      char *a = "ace";
     6      printf("%c
    ", *a);
     7      printf("%p
    ", a); 
     8  
     9      char b = *a++;
    10      printf("%c
    ", b); 
    11      printf("%p
    ", &b);
    12      //printf("%p
    ", p); carefully!!!!
    13  
    14      printf("%c
    ", *a);
    15      printf("%p
    ", a); 
    16  
    17      return 0;
    18  }
    19  
    20  /*******************************
    21   * result:
    22   * a
    23   * 0x400670
    24   * a
    25   * 0x7ffe87ed2417
    26   * c
    27   * 0x400671
    28   * ****************************/

     是的,其实关键是这一句:char b = *a++; ,从输出来看,b 等于字符 a,与*a 的结果一样。那说明*a++中的++效果并没有对b起作用。在*a++后,我再将*a输出,果然,结果为字符c了。从地址来看,在*a++后的,a的地址也向后移动了1(char占一个字节) 。
    理论分析:其实在*a++中,* 与 ++ 的运算级别是一样的,而且是右结合的。在语句b = *a++ 中,因为右结合,所以先算a++,在算*a,要注意的是,a++的用法与++a是不一样的。例如在*a++中,详细过程是这样的:a 先被创建一个临时的副本|a|,然后将原本的a执行a++,再对副本用*运算符即*|a|,最后将*|a| 复制给 变量 b。

  • 相关阅读:
    webpack脚手架增加版本号
    background-image:url为空引发的两次请求问题
    vue中引入.svg图标,使用iconfont图标库
    mysql数据库
    vue 博客知识点汇总
    vue中显示markdown文件为html
    canvans知识点
    js如何实现一定时间后去执行一个函数
    CSS3选择器使用小结
    为什么margin-top不是作用于父元素
  • 原文地址:https://www.cnblogs.com/busui/p/5801506.html
Copyright © 2020-2023  润新知