之前回顾了一些C++的基本特性,但是感觉不够细节。所以,在第二节中,我将通过更多的细节,来加深对C++基础知识的认识。具体的大家可以参考《C++程序设计》《C++
Prime》等书。
一、C++的数据类型
基本的几大类的数据类型,我就不一一在阐述,写这个博客,也只是为了加深一些自己中不深刻的点,基础知识还是推荐大家去系统的学习,要么看书,要么花钱上课,通过博客来学习还是不够的全面的。
1、短整型占2个字节,整型和长整型站占4个字节
2、字符数据在内存中是以ASCII码存储的,所以C++中字符型数据和整型数据之间可以通用:
int i;
i = 'A';
cout <<i<<endl;
输出的结果为65
3、字符串常量在内存中所占的字节数一般要加一个字节,因为百年一系统会在字符串最后自动加一个‘\0’作为字符串结束标志,但是输出时,不会输出。
4、常变量和符号表量的区别
符号变量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为所指定的字符串,它没有类型,换句话说,只是简单的文本替换,在内存中不存在以符号变量命名的存储单元。
例1:#define A 5
a=A;
此时在编译时,a=5;
例2:#define A tem
int tem=1,p;
p=A;
此时在编译时,p=tem,因为之前tem已经被定义了且初始化为1,所以此时p=(tem=5)。如果你在程序中没有定义tem,当编译时发生文本替换后,会报错。
而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度。
二、简单运算符和表达式
1、C++在运算时对所有float型数据都按double型数据处理。
2、% 模运算符,或称求余运算法,%两侧均应为整型数据
3、两个整数相除的结果为整数,一般会舍去小数部分,但是,如果除数或被除数中有个一个为负值,则舍入的方向是不固定。例如,-5/3,在有的C++系统上得到的结果为-1,有的则给出结果-2.多数编译系统采取“向零取整”的方法,即取整后向零靠拢。
4、自增运算符(++)和自减运算符(--),只能用于变量,而不能用于常量或表达式。而且,++和--的结合方向是“自右向左”
例:cout<<-i++,则输出的应该是-(i++)。
5、许多编译系统在处理输出流时,先按自右向左的顺序对个输出项求值,所以
例:int i=3;
cout<<i++<<" "<<i++;
输出的值为“4 3”,而不是正常的“3 4”。
6、如果复制运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时自动进行类型转换。如:
(1)将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分
(2)将整型数据赋给浮点型数据时,数值不变,但以指数形式存储到变量中
(3)讲一个double型数据赋给float变量时,要注意数值范围不能溢出,例如:float f;double d =
123.456789e100;f=d; 就会出现溢出的错误,因为超过了float型的数据范围。
(4)将一个int,short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)
(5)将signed(有符号)型数据赋给长度相同你的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也将作为数值一起传送)
不同类型的整型数据间的复制归根到底就一条:按存储单元中的存储形式直接传送
7、逗号表达式的求解过程是:先求表达式1,再求表达式2。整个逗号表达式式的值式表达式2的值。
热门工具 换一换