【C语言学习记录17】++和--操作符分析

++和—操作符对应两条汇编指令。

1)前置:

       变量自增(减)1

       取变量值

2)后置

       取变量值

       变量自增(减)1

gcc结果: vs结果:

vs和gcc不同(灰色地带)

结果分析:vs先加后自增。

 

 

为什么结果不确定?

1)C语言中只规定了++和--对应指令的相对执行程序;

2)++和--对应的汇编指令不一定连续运行;

3)在混合运算中,++和--的汇编指令可能被打断执行;

++--参与混合运算的结果是不确定的。

笔试中的奇葩题:

编译器究竟如何编译?

int j = ++i+++i+++i;  //该行出错  1++  这样不合法

贪心法:++和--的阅读技巧

1)编译器处理的每个符号应该尽可能多的包含字符;

2)编译器从左向右的顺序一个一个尽可能多的读入字符;

3)当读入的字符不可能和已读入的字符组合成合法 符号为止;

注意:

1)空格可以作为C语言中一个完整符号的休止符;

2)编译器读入空格后立即对之前读入的符号进行处理;(尽量使用空格)

小结:

1)++和--操作符在混合运算中的行为可能不同;

2)编译器通过贪心法处理表达式中的子表达式;

3)空格可以作为C语言中一个完整符号的休止符;

4)编译器读入空格后立即对之前读入的符号进行处理;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值