2020.9.25-10.8/面向对象程序设计/C++编程语言基本准则及其具体表现

本文详细介绍了C++编程的四个基本准则:无二义性、高效性、合乎日常习惯和相似相同规则。从运算符优先级、标识符规定、数组下标到逻辑短路,阐述了这些准则在C++中的具体体现和重要性。
摘要由CSDN通过智能技术生成

一、最高准则:无二义性

对最高准则:无二义性的理解

无二义,是c++编程语言的最高准则,同时也是所有类型编程语言的最高准则,即同一条C++语句不能同时具备两种或多种含义,每一条C++语句只能通过一种方式执行,得到唯一结果。数学中也经常用到这个原则。为了消除二义,人们会认为的规定一些准则或者将某些有二义的行为定位非法。比如运算符的优先级与结合性,先乘除后加减等。再如变量名不能以数字开头,也是为了消除二义性而设置的。

准则的具体体现

(1)运算符的优先级与结合性

优先级是为了消除诸如3+4*5是应被当做(3+4)*5还是3+(4 * 5)的二义性而制定的规则。
示例代码:

int x = 3 + 4 * 5;
cout << x << endl;

结合性是为了消除诸如x=y=z是应先执行y=z还是x=y的二义性而制定的规则。
示例代码:

int x=1, y=2, z=3;
x=y=z;
cout << a << b << endl;

(2)标识符不能以数字开头

标识符不以数字开头的原因是:数字是一种常量,而标识符在语句中一般作为变量存在,如果存在数字开头,计算机会难以辨别是常量还是变量,无法正确区分是否建立对应的存储空间,同理,对编程者而言,程序也会变得难以看懂。

(3)贪心规则

贪心规则是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。由于算法得到的是问题的最优解,故可以消除存在其它非最优解的二义性。

二、次高准则:高效性

对次高准则:高效性的理解

由于c++出现时,计算机的效率较低,因此需要提高语言的效率,将高效性作为c++语言的次高准则。但是随着计算机的发展,性能也越来越高,高效性的地位有所降低。高效性的具体体现:比如,数组下标选择0索引而不是1索引,这样就会减少很多减法的计算。再如,c++引入了指针、内联函数、引用,这些使得c++更加高效。

准则的具体体现

(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。

三、第三准则:合乎日常习惯

对第三准则:合乎日常习惯的理解

这一准则是因为编程语言最终是为程序员所用的,因此符合程序员的习惯使得编程更加高效准确。

准则的具体体现

(1)运算的优先级

在数学中,乘法的优先级高于加法,先计算乘法再计算加法,在C++中也是如此,符合日常习惯,给编写带来了极大方便。
示例代码:

int x=3+4*5

(2)二维数组下标表示总行数和总列数

例如a[3][4]用下标3和4表示一个3行4列的矩阵,合乎日常习惯。

四、补充准则:相似相同规则

对补充准则:相似相同规则的理解

指的是在c++中,如果有两个不同的对象A与B,A有行为a,B有行为b。如果a与b两种行为在逻辑上具有相似性,则c++会为A额外增加一个b,同理,B也将增加一个行为a。

准则的具体体现

C++的三类初始化方式:等号初始化、括号初始化、列表初始化。
等号初始化:

int k=5;
int k=i;

括号初始化:

int k(5);
int k(i);

列表初始化:

   int j{i};
 int j{5};
 int j={i};
 int j={5}

括号初始化是变量与对象之间的“相似相同规则”;列表初始化是变量与数组之间的“相似相同规则”。本质上是C++将变量、对象及数组统一对待的原则的产物。

五、参考链接

C++编程语言的四个基本准则
https://blog.csdn.net/m0_50767528/article/details/108921077
C++编程语言的四个基本准则
https://blog.csdn.net/m0_50765373/article/details/108916778
C++编程语言的四个基本准则
https://blog.csdn.net/NlDH0GG/article/details/108940285

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值