C++编程语言的四个基本准则及其具体的体现:
1.最高准则:无二义性。
对这个准则的理解:
某一确定的C++语句不能同时具备两种及其以上的解释。语句存在的含义一定是唯一的、确定的。
准则的具体体现:
(1)运算符的优先级与结合性。
(1-1)优先级是为了消除多个数据运算的顺序问题。
eg:如果没有运算的优先级,3+4*5就可以被看成(3+4)*5和3+(4 * 5)两种形式。
示例代码:
int x=3+4*5
与此同时,还有“单目运算符”“多目运算符”等等
(1-2)结合性是为了消除诸如x=y=z是应先执行y=z还是x=y的二义性而制定的规则。
(2)标识符不能以数字开头。
假设标识符能以数字开头,那么诸如“0123”、“0x19A”这类“标识符”就无法被区分是常量还是变量。常量与变量无法判断的例子有:0x12可作为十六进制也可作为变量;1000000L可作为长整型也可作为变量,便产生了二义性,违背了最高准则。
(3)贪心规则。
贪心规则是指编译器会尽可能多地结合有效的符号,而不管这样的结合是否合法。在右侧语句算法还能继续链接上时,则继续计算,直到出现断点。贪心规则的运行方式决定了其在某种程度上大大加快了运行的效率,但是因为其限定条件,可能经常不适用,或者报错。
2.第二最高准则:高效性
对这个准则的理解:
高效性规则是为了保证程序运行尽可能节约时间和储存空间。或者在相同或更少时间内程序运行更快且更安全,也可以指产生同样效果的情况下占用更少的内存。
准则的具体体现:
(1)数组下标0索引。
数组是一段连续的空间,要求a[i]就是求它的地址,然后找到它。
如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;
如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。
显然以0索引的方式可以更高效地计算。
(2)逻辑短路。
例如当使用逻辑运算符&&时若运算符左边条件不成立,则不会对运算符右边条件进行判断,保证了程序的高效运行。
举个例子:
int a=1,b=2,c=3;
if(a>b&&b++)
a++;
由于a>b不成立,故运算符&&右边b++不会执行,b仍为2。
3.第三准则:合乎日常习惯
对这个准则的理解:程序虽然是让计算机工作,但是它的撰写与检验等都是由人为来完成,一套不合乎日常习惯的规则会给程序员的使用带来极大的不便,所以说合乎日常习惯有利于程序员的编写与学习。
准则的具体体现:
(1)运算的优先级
在数学中,乘法的优先级高于加法,先计算乘法再计算加法,在C++中也是如此,符合日常习惯,给编写带来了极大方便。
(2)语序
生活中语序是从左到右,而在C++等编程中也是如此。
(3)矩阵的设定
a[2][3]用下标2和3表示一个2行3列的矩阵,与日常近似,合乎日常习惯。
4.相似相同规则
对这个规则的理解:在对于两个不同的对象但是具有相似的性质或者功能条件时,编写相似相近的规则一方面是利于在面对不同的对象也可使其能够完成目标功能的撰写,另一方面则是利于记忆与学习,使得这两个不同对象具有对方的相同行为。有利于程序的简化。
如在C++新标准中出现了以下的初始化赋值形式:
效果与第一句相同
int a=1;
int a(1);
int a{1};
int a={1};
文章参考:
[1]https://my.oschina.net/u/4406918/blog/4661403
[2]https://blog.csdn.net/sanq0103/article/details/108972209