一、最高准则:无二义
理解
同一条语句不能具有两种及以上的含义,否则将导致语句的执行过程发生冲突。
体现
(1)运算符的优先级与结合性
运算符优先级的产生,是为了消除运算过程中可能产生的歧义。例如加法和乘法两种运算到底谁先进行。
int a = 1+2*3
//乘法优先于加法进行运算,输出7,而不是9
(2)标识符不能以数字开头
标识符是一种变量,而数字则是常量。如果标识符中仅包含数字,则计算机无法识别其到底是变量还是常量,且增加了编程的负担。因而,添加了这条规则,用于消除二义性。
(3)贪心规则
贪心规则指的是C++读了一个字符之后,会再往下读一个,判断第一个和第二个字符结合在一起是否有意义,有意义的话就结合在一起,以此类推。贪心规则使得在读取代码时,能够以最优解来运行,因而也就消除了二义性。
二、次高准则:高效性
理解
当C++最初产生时,计算机性能较低,因而只有采用高效的语法规则,才能提升计算机运行的效果。而如今,高效性也为软件带来更快的响应速度,提升用户的体验。
体现
(1)数组的下标
数组的下标采用0索引,而不是1索引。
如果采用0索引,则a[i] = 首地址 + i * 每个数据所占字节长度;
如果采用1索引,则a[i] = 首地址 + (i - 1) * 每个数据所占字节长度。
在C++中,运行减法需要耗费一定的时间,因而采用0索引能够提高执行效率。
(2)逻辑短路
对于&&运算符,当运算符左边的表达式为假时,则不会判断运算符右边的表达式,保证程序高效地执行。
int a = 1,b = 2,c = 3;
if (a>b && b>c)
{
a++
}
//a>b为假,则&&右边的表达式不会进行判断
三、第三准则:合乎日常习惯
理解
程序设计语言最终是给程序员使用的。一套不合乎日常习惯的规则,会给程序员的使用带来极大的不便性,因为日常习惯的惯性是极其强大的。这样会迫使程序员放弃该语言。
体现
(1)运算的优先级
在数学运算中,乘法的优先级高于加法运算。在C++中也是如此,符合日常习惯,提升了编程的效率。
四、补充准则:相似相同规则
理解
如果有两个不同的对象A与B,它们分别具有行为a与b。如果a与b在行为上具有逻辑相似性,那么C++会为A额外增加一个行为b,为B额外增加一个行为a。
体现
(1)C++的三种初始化方式:等号初始化、括号初始化、列表初始化
等号初始化:
int a = 6
int a = b
括号初始化:
int a(6)
int a(b)
列表初始化:
int a{6}
int a{b}
括号初始化是变量与对象之间的“相似相同原则”,列表初始化是变量与数组之间的“相似相同原则”。