理解:在编程时,不存在同一语句有两种不同的执行方式,每条语句对计算机而言只存在一种执行方式,如果有歧义会导致语句错误。 具体体现: (1)运算符的优先级与结合性。 优先级是为了消除诸如3+45的表达式,是应该被当做(3+4)5还是3+(45)的二义性而设定的原则。 示例代码:int x=3+45 结合性是为了消除诸如x=y=z是应该先执行y=z还是x=y的二义性而制定的规则。 示例代码:int x=1,y=2,z=3; x=y=z; (2)标识符不能以数字开头 数字是常量,标识符在语句中一般作为变量存在,如果标识符以数字开头,计算机无法识别是变量还是常量。这条规则避免了此类二义性。 (3)贪心规则 它遵循在每个阶段做出局部最优解的启发式求解方法,可以消除存在其他非最优解的二义性。
2.第二高准则:高效性 理解:为了让程序的储存空间和运行时间尽可能的小而制定,简化了程序的执行方式和过程,可以很好的节约空间和时间。如果有两个行为A与B,A比B高效,则C++语言会选择A行为作为标准语法。 具体体现: (1)数组下标0索引 数组是一段连续的空间,a[i]就是它的地址,要用a[i]找到它。 如果从0开始,a[i]的地址=首地址+i×每个数据所占长度; 如果从1开始,a[i]的地址=首地址+(i-1)×每个数据所占长度;很明显第一种更为高效。 (2)逻辑短路 比如当使用逻辑运算符&&时,如果运算符左边条件不成立,则不会对逻辑符右边的的条件进行判断,减少了不必要的运算时间。 示例代码:int a=1,b=2,c=3; if(a>b&&b++) a++; 因为左边条件不成立,所以右边条件不成立,b仍等于2。
3.第三高准则:合乎日常习惯 理解:程序设计语言最终是给程序员使用的。一套不合乎日常习惯的规则,会给程序员的使用带来极大的不便,因为日常习惯的力量是强大的,这样会迫使程序员放弃该语言。 具体体现: (1)运算的优先级 在数学中,乘法的优先级高于加法,先算乘法然后再算加法,基于此,在C++中也是这样。 示例代码:int x=3+4*5 (2)二维数组下标表示总行数和总列数。 示例代码:a[3][4表示一个三行四列矩阵。
4.补充准则:相似相同规则 理解:在C++中,如果有两个对象A与B,A有a,B有行为b,如果a与b两种行为在逻辑上具有相似性,则C++会为对象A额外增加行为b,也会为B 额外增加一个行为a。有利于程序的简化。 具体体现: (1)C++的三类初始化方式:等号初始化,括号初始化,列表初始化。 等号初始化: int k=8; int k=i; 括号初始化: int k(5); int k(i); 是变量与对象之间相似相同 列表初始化: int j{i}; int j{5}; 是变量与数组之间相似相同
