Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

8.6.1 表达式计算

表达式中子表达式计算顺序所遵循的规则,是按优化编译器的需求设计的,而不是为了方便程序员。这很不幸,但不管怎样你应该避免复杂的表达式,有一条简单的原则可以帮你远离麻烦:如果你在表达式中改变一个变量的值,不要在同一个表达式中再读或写这个变量。例如:

不幸的是,如果你写出这样有问题的代码,并不是所有编译器都能给出警告。这段代码的问题在于,如果你将代码迁移到另外一台计算机,使用另一个编译器,或者改变编译器优化设置,运行结果不保证一致。不同的编译器确实会对这段代码得到不同结果,所以不要这么编写程序。

特别要注意的是,=(赋值符)在表达式中只是又一种运算符而已,并没有特殊的地位,因此不能保证赋值符左边的子表达式在右边的子表达式之前计算。这就是为什么v[++i]=i;结果是不确定的。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252