int i=-1;
int a=65;
int b=a*i + ++i;
Run Code Online (Sandbox Code Playgroud)
b的价值是多少?这里,=,+的关联性是从左到右,*,前缀增量(++)的关联性是从右到左.
那么对于int b = a*i + ++ i,我应该考虑什么样的评估顺序;
左到右?右到左?为什么?
不要考虑相互关系.考虑评估的顺序,遗憾的是在这种情况下它是未定义的.
在表达中
int b=a*i + ++i;
Run Code Online (Sandbox Code Playgroud)
您正在修改i
以及在调用未定义行为的同一表达式中使用它.
C99指出:
在前一个和下一个序列点之间,对象的存储值最多只能通过表达式的计算来修改一次.此外,只能访问先前值以确定要存储的值.
我还建议你阅读c-faq:Q 3.8.
归档时间: |
|
查看次数: |
645 次 |
最近记录: |