一、最高准则:无二义性 无二义性是指C++在执行程序时,对于同一条语句,只有一种执行方式,不存在第二种执行方式;无二义性可以体现在: (1)运算符的优先级和结合性:优先级:运算符的优先级决定了运算符用于值的顺序,在C++中,运算符的优先级解决了程序在运算一些含有两个或多个运算符的语句时不知道应该先计算哪个的情况,例如: 在下面代码中,由于运算符的优先级不同,程序会先运行4*5,再运行3+20,即最终输出的结果是23而不是35;
int a=3+4*5; cout<<a<<endl;//输出结果为23结合性:用来解决下列情况:
int a=12; int b=55; int c=65; a=b=c; cout<<a<<endl;//输出结果为65;(2)标识符不能以数字开头: 标识符不能以数字开头,以此避免冲突,当标识符以数字开头时,无法知道一个全部都是数字的标识符是一个变量还是常量,会引起歧义,违反了无二义性。
char 123="123";//报错 char ab="4567"; cout<<ab<<endl;(3)贪心规则 又称贪婪算法,指在对问题求解时,总是做出在当前看来是最好的选择,即寻找最优解. 二、第二高准则:高效性 (1)数组下标0索引C语言的数组是存储在一片连续的内存空间中的。C++编译器就可以直接通过第一个元素的地址,即数组地址,和相应元素的下标[即距首元素的偏移量]来得到它的地址。 如: 假设arr[0]的地址为10000,编译器可以通过10000 + 2来获取a[2]的地址。从编译器的角度来讲,数组下标[索引]从0开始更为高效。 (2)逻辑短路:即在(a&&b)中,若a为假,则不用计算b
int a=15,b=20,c=2; cout<<((a+b<30)&&c)<<endl;//由于(a+b<30)为假,使用程序不会计算c;三、合乎日常习惯: 指在编程的过程中,设计者将语言的规则设计成合乎编程人的习惯 具体表现为:在C++中,计算机与人一样会从上而下的理解程序语句,当遇到未定义过的函数名时会与人一样无法理解 四、补充原则:相似相同原则 具体表现:变量的初始化形式,存在相似相同原则:
int i=5; int i(5); int j=i; int j(i); int j{i}; int j={i}又如
//指针的初始化: int *p=&a; int *p(&a); int *q=p; int *q(p); int *q{p}; int *q={p}