C++编程语言的四个基本准则及其具体表现

一、最高准则:无二义性

(1)相关理解:

对于我的理解,就是要避免变量名、函数类型(如全局作用域的函数不可放在头文件里面)等出现重合导致计算器出现报错的情况。
在查阅相关资料后:二义性分为两种情况:
①在多继承的场景里,当父类中存在同名变量时,子类访问父类的同名变量,将出现同名二义性;
②当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。

(2)具体体现:

①运算符的优先性与结合性
  1. 优先性:是为了消除诸如3+4*5 的表达式,是应该被当作 (3+4)5 还是3+(45)的二义性而设定的规则。(详情参考:link
  2. 结合性:决定表达式计算顺序时,先看运算符优先级,优先级高的先计算。优先级相同时才考虑结合性。优先级相同的运算符的结合性必须一致。

示例代码:

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

最后得到的结果是23

②标识符不可以数字开头

以数字开头的变量名与C支持的常量表示法有重合的部分,编译时会产生二义性;即使重新设计支持以数字开头的变量命名法则,用于区分变量名/常量名的开销也太大,因此不支持以数字开头。

③贪心规则

贪心法有如下规则:每个符号应该包含尽可能多的字符,也就是说,我们的编译器将程序分解成符号的方法是,从左到右一个一个字符的读入,如果该字符可能组成一个符号,那么再读入下一个字符,然后在判断已经读入的两个字符是否有可能是一个符号或者一个符号的组成部分,如果可能则继续读入下一个字符,然后重复整个过程,直到读入的字符组成的字符串已不再可能组成有意义的符号。
贪心算法:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解。

二、次高准则:高效性

(1)相关理解

高效性是为了使得计算机的运算效率更高,占用运行内存更少而需要对程序进行精简的准则

(2)具体体现

①数组下标0索引

主要是为了提高计算效率。
因为从0开始的话从数组中存储的数据模型来看,下标最精确的意思是”偏移量“,a[0]的偏移量是0,即为首地址。a[i]的偏移量是i,寻址公式就是:a[i]_address = base_address + i*data_type_size;
如果下标从1开始,那对应的寻址公式:a[i]_address = base_address + (i-1)*data_type_size,对CPU来说,每次随机访问,就多了一次运算,多发一条指令。(link

②逻辑短路

逻辑短路规则为对于表达式a&&b 当a为假时,b不会计算
在C语言中,有短路求值:

int main(void)
{
	int a = 3, b = 3;
	(a = 0) && (b = 5);
	printf("a=%d,b=%d\n", a, b);
}

输出结果为a=0,b=3,只有当第一个运算数无法确定逻辑运算数时,才会对第二个运算数进行求值。

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

(1)相关理解

程序语言最终是给人们使用的,一套不符合日常习惯的规则,会使得程序员的使用体验大大降低,因为日常习惯的惯性是极大的,这会使得程序员放弃这门语言。

(2)相关体现

  1. 变量一般都用小写字母、字符串表示;
  2. 在语句的读写顺序上是从左至右从上到下。

四、补充:相似相同原则

(1)相关理解

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

(2)具体体现

变量的初始化:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值