++符号的贪心方法与左值右值和未定义表达式

编译器将程序分解成符号的方法是,从左到右一个一个字符地读入,如果该字符可能组成一个符号,
那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组
成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串
已不再可能组成一个有意义的符号。
这个处理的策略被称为“贪心法”

 

要看懂下面式子,明白两点:

1、左值右值区别。

      左值简单理解为某一变量(有地址空间),可以出现在=的左边,可进行赋值。

      右值:出现在=的右边,可以读取到它的值。

2、未定义表达式 :同一个序列中同一变量只能改变一次。(未定义表达式产生无法预知结果)

3、后置++有优先级高于前置++

                 

++i++ + i++ +i =(++(i++)) + (i++)+i。//贪心法

但是这个表达式有错误:

1、是一个未定义表达式(同一个序列中同一变量只能改变一次);这个表达式i值改变3次。

2、表达式有错误。第一个运算i++会产生一个右值(仅仅是取i的值,而不是获取i)。做完该次运算后再与前一个++,出现错误。右值只允许赋值给左值,无法自加1(无法对存储空间进行操作).

你可能感兴趣的:(++符号的贪心方法与左值右值和未定义表达式)