基本数据类型
整数类型
int
short int 或 short
long int 或 long
//数值范围:
short int <= int <= long int
//无符号整数类型
unsigned int 或 unsigned
unsigned short int 或 unsigned short
unsigned long int 或 unsigned long
两者区别:1、其内存空间中没有表示符号的位,所有二进制均用于表示数值。
2、无符号整数类型所表示的最大正整数比有符号整数类型所表示的最大正整数要大(大约一倍)。
3、无符号整数类型可提高程序的可靠性(如把一些不可能取负数的变量定义成无符号整数类型)。
4、无符号整数类型可表示一些二进制位构成的非数值数据(如设备的状态数据以及图像的位图数据)。
实数类型
float //占4字节,-3.402823466*10^38 ~ 3.402823466*10^38
double //占8字节,-1.7976931348623158*10^308 ~ 1.7976931348623158*10^308
long double //可能是8或者10字节
//数值范围:
float < double <= long double
字符类型
ASCII码
逻辑类型(布尔类型)
描述真和假的逻辑值
true //真(1)
false //假(0)
数据的表现形式
常量
字面常量
(1) 整数类型字面常量
十进制、八进制、十六进制
(2) 实数类型字面常量
采用十进制
-
小数表示法:456.789、-0.0057。
-
科学计数法:在小数或整数后加上一个指数部分(E或e表示基数为10的指数)。如:4.5678E2、-5.7e-3
默认情况下,实数类型字面常量为double型。
(3)字符类型字面常量
一般由一对单引号括起来的一个字符来表示。
编码可以采用八进制或十六进制:
- 八进制:’\ddd’,ddd为三位八进制数。
- 十六进制:’\xhh’,hh为两位十六进制数。
//字母A有三种表示:
'A'、'\101'、'\x41'
特别注意
//反斜杠: '\\'
//单引号: '\''
//双引号: '\"' 或 '"'
C++常见转义字符
(4)字符串字面常量
" Hello World"
"I'm a student."
"Please enter \"Y\" or \"N\":"
注意: 当字符串中包含双引号(“)时,双引号应写成:\ "。
字符常量与字符串常量的区别
- 字符常量表示单个字符,其类型为字符类型(char);而字符串常量可以表示多个字符,其类型为一维字符类型。
- 字符常量用单引号表示,而字符串常量用双引号表示。
- 对字符常量的操作按char类型进行;对字符串常量的操作按照一维字符数组的规定。
- 字符常量在内存中占1字节;字符串常量占多个字节,其字节数为字符串中的字符个数加上1。
符号常量
const <类型名> <常量名> = <值>;
或
#define <常量名> <值>
优势
- 增加程序的可读性
- 提高程序对常量使用的一致性
- 增强程序的维护性
变量
<类型名> <变量名>;
或
<类型名> <变量名> = <初值>;
或
<类型名> <变量名> (<初值>);
//例如
int a = 0;
int b = a + 1;
double x;
int a = 0, b = a + 1;
注意: 在定义一个变量时如果未指定变量的初值,则该变量的值一般没有意义的,一定要在使用该变量前给它一个有意义的值!
变量值的输入
cin >> a;
cin >> a >> b;
scanf();
数据的基本运算
操作符
算术操作符
- +、-、*、/、%
- 取负(-)、取正(+)
- 自增(++)、自减(–)
关系与逻辑运算符
- 关系运算符:>、<、>=、<=、==、!=
- 逻辑操作符:&&(与)、||(或)、!(非)
短路求值
对于逻辑 “与” 操作和逻辑 “或” 操作,如果第一个操作数已能确定运算结果,则不再计算第二个操作数的值。
位操作符
逻辑位操作符
移位操作符
赋值操作符
+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
其他操作符
条件操作符(?:)
逗号操作符(,)
sizeof操作符
sizeof(<类型名>) 或 sizeof(<表达式>)
算法描述–语句
顺序执行
表达式语句
a + b * c //基本运算
a > b ? a : b //判断
a++; //自增
x = a + b; //赋值
f(a); //函数调用
cin >> a; //输入
cout << b; //输出
复合语句
由一对花括号({})括起来的一个或多个语句构成,又称为块。
{
int a,b; // 数据定义
cin >> a >> b; //输入
int max; //数据定义
max = (a >= b) ? a : b;
cout << max << endl; //输出
}
空语句
空语句不做任何事情。
**作用:**用于语法上需要一条语句的地方,该地方又不需要做任何事情。
;
选择执行
if语句
(1) if (<表达式>)<语句>
(2) if (<表达式>)<语句1> else <语句2>
(3) if (<表达式>)<语句1> else if (<表达式>)<语句2> else <语句3>
switch语句
又称开关语句,能根据某个整型表达式的值在多组语句中选择一组语句来执行。
switch (<整型表达式>)
{
case <表达式1>: <序列1> (break;)
case <表达式2>: <序列2> (break;)
...
case <表达式n>: <序列n>
[default: <序列n+1>]
}
显然,比if语句效率要高!
循环(重复)执行
while语句
while (<表达式>) <语句>
do-while语句
do <语句> while (<表达式>);
for语句
for (<表达式1>; <表达式2>; <表达式3>) <语句>
三种语句的一般原则:
for: 计数控制的循环;
while或do-while: 事件控制的循环;(其中:如果循环体至少要执行一次,则用do-while语句)
无条件转移
goto语句
goto <语句标号>;
//<语句标号> 定义格式
<语句标号>; <语句>
含义:转向带标号的语句执行
注意: 不能用goto语句从一个函数外部转入该函数的内部(函数体),也不能用goto语句从一个函数的内部转到该函数的外部。
while(...)
{
...
...goto L;
.....
}
L: ...
break语句
break;
含义:1)结束switch语句的某个分支的执行
2)退出包含它的循环语句
while(...)
{
...
...break;
.....
}
...
continue语句
continue;
含义:立即结束当前循环,准备进入下一个循环。
while(...)
{
...
...continue;
.....
}
用goto语句从一个函数的内部转到该函数的外部。**
while(...)
{
...
...goto L;
.....
}
L: ...
break语句
break;
含义:1)结束switch语句的某个分支的执行
2)退出包含它的循环语句
while(...)
{
...
...break;
.....
}
...
continue语句
continue;
含义:立即结束当前循环,准备进入下一个循环。
while(...)
{
...
...continue;
.....
}