2020-10-08

C++编程语言的四个基本准则
1.最高准则:无二义性
理解:同一条语句不能包含两种及以上的含义。
1)运算符的优先级与结合性。
优先级是为了消除诸如3+4*5是应被当做(3+4)*5还是3+(4 * 5)的二义性而制定的规则。
示例代码:

int x=3+4*5

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

int x,y=1,z=2;
x=y=z;

(2)标识符不能以数字开头。
假设标识符能以数字开头,那么诸如“0123”、“0x19A”这类“标识符”就无法被区分是常量还是变量。这条规则的制定很好地消除了此类二义性。
(3)贪心规则。
贪心规则是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。由于算法得到的是问题的最优解,故可以消除存在其它非最优解的二义性。
二、次高准则:高效性
对这个准则的理解:高效性规则是为了保证程序的运行时间和储存空间尽可能节约而制定的,简化了程序的执行方式和过程,可以很好地避免时间和空间的浪费。
准则的具体体现:
(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++会为这两个对象额外增加对方的行为,使得这两个不同对象具有对方的相同行为。有利于程序的简化。
准则的具体体现:
(1)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++将变量、对象及数组统一对待的原则的产物。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值