C++编程语言的四个基本准则
几乎所有的C++中的语法推导,都可以按照这几条基本原则来推导。
一、最高准则:无二义性
**对这个准则的理解:**算法的每一个步骤,必须要有确切的含义,计算机通过特殊的规则进行数据处理。当每次进行相同输入时,会输出相同的结果,这就是最高准则。
准则的具体表现:
- 运算符的优先级与结合性。
运算符的优先级能消除一个算式的二义性,使其更合乎人的逻辑,如3+4*5,运算顺序是先乘后加,消除先加后乘的二义性。
示例:
int a=3+4*5; cout<<a<<endl;
此时输出结果为23即进行先乘后加。
运算符的结合性是指同一优先级的运算符在表达式中的操作方向,如x=y=z,应先将z的值幅值给y,再将y的值幅值给x; - 标识符不能以数字开头
例如:0x7C7D(16进制数),014(8进制数),均具有二义性。所以数字开头的变量名与C++支持的常量表示法有一个式子,两种含义的部分。这会使程序出错。 - 贪心规则
对于C++语言的一个逻辑算法,虽可能存在多个解决方案,但总是会优先选择“最优解”。
示例:i+++j,是按照i+(++j)运算还是(i++)+j运算呢?根据贪心规则,在分析符号的时候,编译器会尽可能多地结合有效的符号,例如上面的表达式:“+” 和“++”都是有效地符号,但是“+++”不是有效的符号,因此,经过分析后,最终将表达式解析为:++ +。
i+++j
二、次高准则:高效性
**对这个准则的理解:**在高级语言中,面向过程的C++以短小精悍,简洁高效,能够直接操作备受人们青睐,如指针、引用、内联函数,都使其高效性的体现。
**准则的具体表现:**就以简单的指针为例,指针能够直接对内存单元里的数据进行操作,不必要通过变量名找到数据对应地址,节省了时间开销。
#include <iostream>
using namespace std;
int main ()
{
int var = 20; // 实际变量的声明
int* ip; // 指针变量的声明
ip = &var; // 在指针变量中存储
cout << "Value of var variable: ";
cout << var << endl;
三、第三准则:合乎日常习惯
**对这个准则的理解:**程序设计应该尽量贴合日常逻辑思维,违反日常习惯的规则,徒劳增加不必要的理解时间。
准则的具体表现:
- 运算的优先级:
程序员在数学中,乘法的优先级高于加法,先计算乘法再计算加法。同样,运用括号作为最高优先级而先进行其中的运算。这样的设计贴合程序员日常习惯,提升了工作效率。 - 二维数组下标表示总行数和总列数:
例如a[n][m]用下标n和m表示一个n行m列的矩阵,合乎日常习惯。
四、补充准则:相似相同原则
对这个准则的理解:
C++中,如果有两个不同的对象A与B,A有行为a,B有行为b,如果a与b两种行为在逻辑上具有相似性,则C++会为对象A额外增加一个行为b,也会将对象B额外增加一个行为a。
准则的具体表现:(1)变量的初始化:
如定义变量a等于5,一般是int a=5;
但也有int a(5); (括号的初始化,形似对象的初始化);还有int a={5};有int a{5};;以及int a=({5});