第二章---变量和基本类型
来源:互联网 发布:如何导出淘宝客户资料 编辑:程序博客网 时间:2024/06/05 07:43
2.1、基本内置类型
c++定义了一组表示整数、浮点数、字符、布尔值的算术类型,还定义了一种称为void的特殊类型,void没有对象的值,尽在一些有限的情况下使用,通常用在无返回值的函数的返回类型。
下述表中列出了c++中内置算术类型和其对应的最小的存储空间、
类型含义最小存储空间bool布尔类型---char字符型8位w_char宽字符型16位short短整型16位int整型16位long长整型32位float单精度浮点型6位有效数字double双精度浮点型10位有效数字long double扩展经度浮点型10位有效数字其中,整数、字符和布尔值的算术类型成为整型,其中字符有char和w_char两种类型,char通常是单个机器的字节byte,其中c++中无java中byte类型,byte相当于unsigned char。在32位机器上,int和long的位数是一样的,都是32位,通常short表示半个机器字长,int一个,long一个或者两个。除了bool以外,整型可以带符号的signed,也可以是无符号的unsigned,int、long、shot默认都是带符号的,若要指定为无符号的,则要在类型前面加unsigned。其中unsigned默认指的是unsigned int类型。对超过整型类型能表示的数值赋值的时候,采取对其取模运算,这样,把负数复制给无符号类型也是合法的,因为要对其进行取模运算。浮点型:
使用double类型基本上是不会有错的,使用float类型中隐式的精度损失是不可忽视的,而双精度计算的代价相对于单精度可以忽略,事实上,在有些机器上,时候double类型要比float类型要快的多,而long double提供的精度同城没有必要,而且还要承担额外的运算代价。
字面值常量:
以0(零)开头的字面值整数通常表示八进制,0x或者0X开头的表示十六进制。定义长整型时候,应该用大写字母L,小写字母很容易与1想混淆。
默认的浮点字面值常量为double类型,在数值后面加F或者f表示单精度,加L或者l表示扩张精度。
字符型的字面值常量通常用一对单引号来定义,如 'a'、'2'、在字符字面值前面加上L就能得到w_char类型的宽字符字面值。
转移序列:
换行 \n 回车\r 报警\a
字符串字面值:
除了上述基本的内置类型,还有一种字面值更为复杂,就是字符串字面值,通常用双引号括起来。如"hello world",为了兼容c语言,c++中所有字符串字面值都是由编译器自动在末尾加一个空字符。如字符字面值 'A' 仅仅表示一个A,而"A"表示包含了一个字母A和空字符两个字符的字符串。
在前面加一个L 如L"a wide string literal"同样以一个宽空字符结束。
字符串字面值的连接:
值得注意的是cout<< "multi-line" L"literal"<<endl; 结果是未定义的,也就是说,连接不通类型的行为标准没有定义,在不通的编译器下程序可能有不同的结果。
多行字面值:
如下是合法的:
std::cou\
t<<"hi"<<st\
d::endl;
但注意,\ 后面不准有空格或者注释。
2.3变量:
左值:既可以出现在赋值语句的左边,也可以出现右边,右值:只能出现在赋值语句的右边
如变量就是左值,数字字面值是右值。
变量:
变量必须以字母或者下划线开头,其中不能连着两个下划线,下划线后面不能跟着大写字母。
命名习惯:变量名一般用小写,
定义对象:
初始化有两种方式,直接初始化和复制初始化,要注意的是,初始化不是复制,初始化包括对象的创建和赋值,在类类型初始化的时候,复制初始化和直接初始化有很微妙的关系。如下:string titlea = "hello world";跟String titleb = "hello world";两个指向都是hello world的副本。(这个原理貌似跟java中的有些相似)。
规则:
位于函数体外的内置变量在都初始化为0,位于函数体内的内置变量无初始化,使用未初始化的变量将会发生不可预见的行为,因为不知道变量里面存放的是什么
声明和定义
extern 声明变量而不定义它,可以多次声明,但只能有一次定义,声明并不分配内存空间,如果声明阶段定义了,就表示定义,在此之后就不能再声明,
变量的作用域
局部变量若与全局变量重名,则在局部变量的作用域范围内,覆盖全局变量。
const限定符
const对象在定义的时候,一定要初始化,在多个文件中,非const对象默认为extern,const对象则需要在前面显示的添加extern。
引用
引用是别名,和被引用的对象所指的对象一样。非const引用要与被引用对象的类型相同,const引用要求与被引用对象的类型相关即可。
typedef
别名,格式如下 typedef double num
枚举
用关键字enum表示,后一个值要比前一个值大一,值可以是重复的,如下 enum points{ point2d=2,point2w,point3D=3,point3w};point2w和point3D的值都为3
类类型
通常在类的花括号后面加一个;
c++中struct和public唯一的区别在于默认的成员访问权限不一样,struct默认的是public,二class默认的是private
预处理
#ifndef A
#define B
#endif 测试A是否定义,如定义则结束,若没有定义则之后define后面的代码 独用在头文件中,若头文件多次包含,则会出现难以理解的编译错误
- 第二章 变量和基本类型
- 第二章 变量和基本类型
- 第二章:变量和基本类型
- 第二章变量和基本类型
- 第二章:变量和基本类型
- 第二章 变量和基本类型
- 第二章---变量和基本类型
- 第二章 变量和基本类型
- 第二章 变量和基本类型
- 第二章 变量和基本类型
- 第二章,变量和基本类型
- 第二章 变量和基本类型
- 第二章-变量和基本类型1
- 第二章-变量和基本类型2
- 第二章 变量和基本类型
- 第二章 变量和基本类型
- 第二章变量和基本类型
- 第二章 变量和基本类型
- Program received signal SIGSEGV, Segmentation fault.
- Oracle的sql语句练习题含答案
- 根据指定窗口句柄进行截屏
- c/c++成长之捷径
- 编程之美-3.1字符串移位包含问题
- 第二章---变量和基本类型
- 排序算法的重要评价标准
- 调试socket(linux下的C)出现:warning: overflow in implicit constant conversion
- 中国移动校园WLAN客户端及使用方法
- 如何掌握程序语言
- POJ 3352(Tarjen中Low的性质)
- 斜率优化
- 0644
- linux 中df和du命令的区别