之前回顾了一些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的值。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信