C++编程语言的四个基本准则

1、最高准则:无二义性

无二义性指的是C++语言在编程时,不存在同一语句有两种不同的执行方式,每条语句对计算机而言只有一种执行操作,以避免编程者编写出具有二义性的语句。

准则的具体体现:
(1) 运算符的优先级与结合性
优先级是为了消除诸如3+4*5 的表达式,是应该被当作 (3+4)*5 还是3+(4*5)的二义性而设定的规则。
示例代码:

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

输出x的结果只会是23,而不会是35。

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

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

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

(3) 贪心规则
贪婪算法是一种算法范例,它遵循在每个阶段做出局部最优选择的启发式求解方法,目的是寻找到一个全局最优解。在许多问题中,贪婪策略通常不会产生最优解,但是贪婪启发式可能会在合理的时间内产生近似全局最优解的局部最优解。

2、第二高准则:高效性

高效性指的是为了计算机运算的简单方便以及节省运算过程和时间而设计编程规则特性。

准则的具体表现:
(1) 数组下标0索引。
在数组的检索中,若从0索引可以减少计算机的计算。
因为a[10]中a[0]到a[9]的地址是从a[0]开始的一连串内存空间,
如果我们从下标1开始索引,那么a[i]的地址就等于a[0]的地址加上( i - 1 )个的地址长度;
但如果我们从下标0开始索引,那么a[i]的地址就等于a[0]的地址加上 i 个的地址长度,
在下标0索引的情况下,计算机可以减少一次减法运算,考虑到计算机减法是通过计算机的补码来实现,通过下标0索引可以提高计算机的高效性,因此才用了与人日常习惯相反的规则。

(2) 逻辑短路
逻辑短路规则为对于表达式a&&b 当a为假时,b不会计算。

int a = 1, b = 2;
if(( a == b ) && b++ )
cout << b << endl; 

最后输出的b的值是2,及符合逻辑短路。

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

合乎日常习惯指的是C++的编程者是人,因此在设计的过程中,在不违背上诉两个准则的情况下,设计者把语言的规则设计得适合普通人的使用。

准则的具体表现:
C++语言中,语句一般由上而下理解,如果存在上文中未定义的函数,程序会报错。
计算机由上而下的编译语句,遇到没有定义过的函数时会像人类一样无法理解函数的意义,通常需要我们在该语句前对函数添加说明,这个编程规则也是合乎人类的日常习惯的。

4、补充原则:相似相同原则

在相似但不同语句a和b之间,存在着与a相似的b语句以及与b相似的a语句。

准则的具体表现:
C++语言中,对变量的初始化方式有三种:等号初始化,括号初始化以及列表初始化。

等号初始化:

int x = 1;
int x = y;

括号初始化:

int x (1);
int x (y);

列表初始化:

int x = {1};

其中,等号初始化是常见的初始化形式,即可赋予常量的值也可以赋予变量;
而括号初始化是C++里,相似的初始化形式;
列表初始化源自于数组的初始化,
int a[2] = { 1 , 2 }int a[1] = { 1 } 再到int a ={ 1 }

还有括号和列表初始化的结合表达方式

int x({1});

以及对列表初始化的简化:

int x{1};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值