第一章 数据类型与表达式
C++语言的字符集与词汇
C++的数据包括:
常量:程序运行时其值不能改变的量(即常数)
变量:程序运行时其值可以改变的量称为变量。
常量与变量都具有类型。
数据类型
计算机处理的对象是数据,而数据是以某种特定
的形式存在的(例如整数、浮点数、字符等形
式)
C++可以使用的数据类型如下:
常数
定义:程序运行时其值不能改变的量(即常数)
分类:
符号常量:用标识符代表常量
定义格式: #define 符号常量 常量
一般用大写字母
直接常量:
整型常量
实型常量
字符常量
字符串常量
整型常量(整常数)
三种形式:
十进制整数:
由数字0~9和正负号表示. 如 123,-456,0
八进制整数:
由数字0开头,后跟数字0~7表示. 如0123,011
十六进制整数:
由0x开头,后跟09,af,A~F表示. 如0x123,0Xff
整型常量的类型
根据其值所在范围确定其数据类型
在整常量后加字母l或L,认为它是long int 型常量
实型常量(实数或浮点数)
表示形式:
十进制数形式:
由整数部分和小数部分组成,必须有小数点) 如0.123, .123, 123.0, 0.0, 123.
( 可以省略其中之一,如78.或.06,.0,但不能二者皆省略。)
指数形式:
其一般形式为 尾数 e或E 指数
用e或E代替指数10
e或E之前后必须有数字;
指数必须为整数
如12.3e3 ,123E2, 1.23e4 , e-5(×) , 1.2E-3.5 (×)
实型常量的类型
默认double型
在实型常量后加字母f或F,认为它是float 型
在实型常量后加字母l或L,认为它是long double 型
例如:
1.23E10 0.23E-4
45.e+23 -23.68E12
1.23E10F 0.23E-4f
45.e+23L -23.68E12L
字符常量
定义:用单引号括起来的单个普通字符或转义字
符.
普通字符: ‘a’ ‘A’ ‘? ’ ‘\n’ ‘\101’
转义字符:反斜线后面跟一个字符或一个代码值表示
字符常量的值:该字符的ASCII码值
‘A’—65, ‘a’—97,‘0’—48 , ‘\n’—10
字符在存储时将其相应的ASCII代码放到存储单元中。
如果字符变量c1的值为’a’,c2的值为’b’,则在变量中
存放的是’a’的ASCII码97,‘b’ 的ASCII码98,详见附
录A。
字符数据是以ASCII码存储的,它的存储形式就与整数
的存储形式类似。因此字符数据和整形数据之间可以在
一定程度上相互转换。
字符串常量
定义:用双引号("")括起来的字符序列
存储:每个字符串尾自动加一个 ‘\0’ 作为
字符串结束标志
例 字符串"hello"在内存中: h e l l o \0
例 空串 “”
字符常量与字符串常量不同
注意:
如果一个字符串实在很长,一行写
不下,可以在行尾插入一个斜杠符
号,以示意编译器下行继续:
cout<<" *\n ***\n **\n\
****\n *****\n ***\n *\n";
变量
在程序运行期间其值可以改变的量称为变量。
一个变量在内存中占据一定的存储单元,在该存储单元中存放变量的值。
注意区分变量名和变量值这两个不同的概念。
注意
对多个变量在定义时赋予同一初值,必须分别
指定,不能写成
float a=b=c=4.5; //错误
而应写成
float a=4.5,b=4.5,c=4.5;
或
float a,b,c;
a=b=c=4.5;
常变量
在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constant
variable)。
const int a=3;
在定义常变量时必须同时对它初始化,此后它的值不能再改变。
const int a; a=3; //错误
可以用表达式对常变量初始化,如
const int b=3+6, c=3*cos(1.5);
注意:由于使用了系统标准数学函数cos,必须将包含该函数有
关的信息的头文件“cmath”(或math.h)包含到本程序单位中来。
常变量又称为只读变量(read-only-variable)。
运算符
自增和自减运算符
自增(++)和自减(–)运算符的作用是使变量的值增1或
减1,
前置 ++i, --i (先执行i+1或i-1,再使用i值)
后置 i++, i-- (先使用i值,再执行i+1或i-1)
++i与i++的***区别***在于:
如果++i与i++又作为分量参加其他运算的话,
++i是先令i加1然后参加其他运算;
i++是先令i参加其他运算,而后再令i加1。
例:
x=i++; //结果等价于{ x=i; i=i+1; }
x=++i; //结果等价于{ i=i+1; x=i; }
++ --结合方向: 自右向左
例 -i++ -(i++)
各类数值型数据间的混合运算
int、float、double型数据可以混合运算
char、int型数据可以通用
强制类型转换运算符
在表达式中不同类型的数据会自动地转换类型进行运算。
还可以利用强制类型转换运算符将一个表达式转换成所
需类型。
强制类型转换的一般形式为
(类型名)(表达式)
例如:
(double)a (将a转换成double类型)
(int)(x+y) (将x+y的值转换成整型)
(float)(5%3) (将5%3的值转换成float型)
注意
如果要进行强制类型转换的对象是一个变量,该变量
可以不用括号括起来。
如果要进行强制类型转换的对象是一个包含多项的表
达式,则表达式应该用括号括起来。
例如x=3.6;y=4.2
(int)x+y 与(int)(x+y)的区别
在强制类型转换时,得到一个所需类型的中间变量,
但原来变量的类型未发生变化。
#include
using namespace std;
int main( )
{ float x;
int i;
x=3.6;
i=(int)x;
cout<<“x=”<<x<<",i="<< i<<endl;
return 0;
}
赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型
例:
float f;
int i;
i=10;
f=i; // f=10.0
i=2.56; //结果i=2;