c/c++易错知识点整理1(c/c++程序基础)

来源:互联网 发布:公务员面试报网络班 编辑:程序博客网 时间:2024/06/03 19:39

一、c/c++程序基础

1.在main函数里局部变量引用优先,c++中可以通过域操作符“::”来直接操作全局变量;


2.i=8;  printf("%d",-i++);    先打印-i的值,在i++ ,打印-8,而i此时i=9;


3.在内建数据类型的情况,i++和++i效率没有区别;


4.良好的条件比较语句:

(1)bool flag;
if(flag);
if(!flag);
不可将布尔变量直接去TRUE、FALSE进行比较

(2)int value;

if(value==0);
if(value!=0);
(3)float x;  double x;
if(x>=-EPSINON)&&(x<=EPSINON);
if((x<-EPSINON)||(X>EXPNON));
EPSNION是允许的误差(精度);
无论是float还是double类型的变量,都有精度限制,应设法转化为">="或"<="形式;
(4)int* p;
if(p==NULL);
if(p!=NULL);
用p与NULL显式比较,强调p是指针;



5.无符号与有符号变量的转换:
当表达式中存在有符号类型和无符号类型时,所有的操作符都自动转换成无符号类型。

有符号类型转换为无符号
-1,-2,-3,...,-128,127,126;


6.将a,b的值进行交换
(1). int temp=a; //使用局部变量temp,最普通的方法
a=b;
b=temp;
(2). a=a+b;//使用加减运算,可能会导致数据溢出
b=a-b;
a=a-b;
(3). a^=b;//使用异或运算
b^=a;
a^=b;


7.c++与c有什么不同?


c是一个结构化语言,它的重点在于算法和数据结构。对于语言本身而言,c是c++的子集
。c程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理,得到输出。对于
c++,首要考虑的是如何后造一个对象模型,让这个模型能够配合对应的问题,这样就可
以通过获取对象的状态信息得到输出或实现过程控制。
因此,c与c++的最大区别在于,它们用于解决问题的思想方法不一样。
c实现了c++中过程化控制及其他相关功能。而在c++中的c,相对于原来的c还有所加强,
引入了重载、内联函数、异常处理等。c++更是拓展了面向对象设计的内容,如类、继承
、组合与继承的使用等问题。
相对于c,c++包含了更丰富的设计概念。

8.如何理解c++是面向对象化的,而c是面向过程化的
c是面向过程化的,但是c++不是完全面向对象化的。c++中也完全可以写出c一样过程化的
程序,所以只能说c++拥有面向对象的特性。Java是真正面向对象化的。


9.atexit()函数
atexit函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。
函数原型:int atexit(void(*)(void));
可以用atexit()函数来注册程序正常终止时要被调用的函数,并且在main()函数结束时,
调用这些函数的顺序与注册他们的顺序相反,一个程序最大可以用atexit()注册32个函数。