【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)编译器读入空格后立即对之前读入的符号进行处理;

猜你喜欢

转载自blog.csdn.net/haibing_x/article/details/94591346
今日推荐