一、数据类型复习:
1.什么是标示符
1)标示符就是程序员自己在程序中起的一些名字。
1)不能和关键字同名。
2)要有一定得规则。
2.标示符的作用
1)标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来
2)为了区分函数以及变量
3.命名规则
1)只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_、美元符号$组成
2)严格区分大小写,
3)不能以数字开头
4)不能与关键字重名
4、数据分类
1)静态数据
2)动态数据
区分方法:在内存中的为动态数据,反之
5、数据大小
计量单位(字节:Byte=>B,比特位:bit)
1 B = 8 bit
1 KB = 1024 B,1MB = 1024 KB
1 GB = 1024 MB,1TB = 1024 GB
不同数据类型表示的范围
计算一个位数的范围:-2^(n-1)~2^(n-1)-1
n代表位数
bool型为布尔型,占1个字节,取值0或1。
BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。
sbyte型为有符号8位整数,占1个字节,取值范围在128~127之间。
bytet型为无符号16位整数,占2个字节,取值范围在0~255之间。
short型为有符号16位整数,占2个字节,取值范围在-32,768~32,767之间。
ushort型为无符号16位整数,占2个字节,取值范围在0~65,535之间。
int型为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之间。
uint型为无符号32位整数,占4个字节,取值范围在0~4,294,967,295之间。
long型为64位有符号整数,占8个字节,取值范围在9,223,372,036,854,775,808~9,223,372,036,854,775,807之间。
ulong型为64位无符号整数,占8个字节,取值范围在0~18,446,744,073,709,551,615之间。
float型为32位单精度实数,占4个字节,取值范围3.4E+10的负38次方~3.4E+10的38次方之间。
double型为64位实数,占8个字节,取值范围1.7E+10的负308次方~1.7E+10的正308次方。
指针占4个字节。
注意:int占多少个字节是由编译器决定的,ANSI标准定义int是占2个字节.
TC是按ANSI标准的,它的int是占2个字节的.
你可以在TC里试.printf("%d",sizeof(int));结果是2;
但是在VC里,一个int是占4个字节的,在VC里面,
printf("%d",sizeof(int));
cout<<sizeof(int);结果都是4.
不同的编译器,规定也不一样.
float,double也是一样的,在不同的编译器里,占的字节是不一样的 。
6.转义字符
关于printf函数的进一步说明: 如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3); 输出0.333333%。
\n |
换行,相当于敲一下回车。 |
\t |
跳到下一个tab位置,相当于按一下键盘上的tab键。 |
\b |
退格,相当于按一下backspace。 |
\r |
使光标回到本行开头。 |
\f |
换页,光标移到到下页开头。 |
\\ |
输出\字符,也就是在屏幕上显示一个\字符。 |
\' |
输出'字符,也就是在屏幕上显示一个'字符。 |
\" |
输出"字符,也就是在屏幕上显示一个"字符。 |
各种类型对应的占位符
1)int %d
2)float %f
3)char %c
4)double %lf
5)字符串(char *)%s
二、运算符复习
1、优先级:
C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。
优先级 |
运算符 |
名称或含义 |
使用形式 |
结合方向 |
说明 |
1 |
[] |
数组下标 |
数组名[常量表达式] |
左到右 |
|
|
() |
圆括号 |
(表达式)/函数名(形参表) |
|
|
|
. |
成员选择(对象) |
对象.成员名 |
|
|
|
-> |
成员选择(指针) |
对象指针->成员名 |
|
|
2 |
- |
负号运算符 |
-表达式 |
右到左 |
单目运算符 |
|
(类型) |
强制类型转换 |
(数据类型)表达式 |
|
|
|
++ |
自增运算符 |
++变量名/变量名++ |
|
单目运算符 |
|
-- |
自减运算符 |
--变量名/变量名-- |
|
单目运算符 |
|
* |
取值运算符 |
*指针变量 |
|
单目运算符 |
|
& |
取地址运算符 |
&变量名 |
|
单目运算符 |
|
! |
逻辑非运算符 |
!表达式 |
|
单目运算符 |
|
~ |
按位取反运算符 |
~表达式 |
|
单目运算符 |
|
sizeof |
长度运算符 |
sizeof(表达式) |
|
|
3 |
/ |
除 |
表达式/表达式 |
左到右 |
双目运算符 |
|
* |
乘 |
表达式*表达式 |
|
双目运算符 |
|
% |
余数(取模) |
整型表达式/整型表达式 |
|
双目运算符 |
4 |
+ |
加 |
表达式+表达式 |
左到右 |
双目运算符 |
|
- |
减 |
表达式-表达式 |
|
双目运算符 |
5 |
<< |
左移 |
变量<<表达式 |
左到右 |
双目运算符 |
|
>> |
右移 |
变量>>表达式 |
|
双目运算符 |
6 |
> |
大于 |
表达式>表达式 |
左到右 |
双目运算符 |
|
>= |
大于等于 |
表达式>=表达式 |
|
双目运算符 |
|
< |
小于 |
表达式<表达式 |
|
双目运算符 |
|
<= |
小于等于 |
表达式<=表达式 |
|
双目运算符 |
7 |
== |
等于 |
表达式==表达式 |
左到右 |
双目运算符 |
|
!= |
不等于 |
表达式!= 表达式 |
|
双目运算符 |
8 |
& |
按位与 |
表达式&表达式 |
左到右 |
双目运算符 |
9 |
^ |
按位异或 |
表达式^表达式 |
左到右 |
双目运算符 |
10 |
| |
按位或 |
表达式|表达式 |
左到右 |
双目运算符 |
11 |
&& |
逻辑与 |
表达式&&表达式 |
左到右 |
双目运算符 |
12 |
|| |
逻辑或 |
表达式||表达式 |
左到右 |
双目运算符 |
13 |
?: |
条件运算符 |
表达式1? 表达式2: 表达式3 |
右到左 |
三目运算符 |
14 |
= |
赋值运算符 |
变量=表达式 |
右到左 |
|
|
/= |
除后赋值 |
变量/=表达式 |
|
|
|
*= |
乘后赋值 |
变量*=表达式 |
|
|
|
%= |
取模后赋值 |
变量%=表达式 |
|
|
|
+= |
加后赋值 |
变量+=表达式 |
|
|
|
-= |
减后赋值 |
变量-=表达式 |
|
|
|
<<= |
左移后赋值 |
变量<<=表达式 |
|
|
|
>>= |
右移后赋值 |
变量>>=表达式 |
|
|
|
&= |
按位与后赋值 |
变量&=表达式 |
|
|
|
^= |
按位异或后赋值 |
变量^=表达式 |
|
|
|
|= |
按位或后赋值 |
变量|=表达式 |
|
|
15 |
, |
逗号运算符 |
表达式,表达式,... |
左到右 |
从左向右顺序运算 |
2、在使用强制转换时应注意以下问题:
1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
3、C语言中的真假性
在C语言中所有数值都是有真假性,非零即真,只有0为假,关系运算符返回值只有两个要么是真(1) 要么是假(0) 关系运算符(比较运算符)
4、关系运算符的优先级
关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=
==和!=的优先级相同。
5、逻辑表达式的值
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:
1) 与运算(&&)
参与运算的两个量都为真时,结果才为真,否则为假。口诀:一假则假
2) 或运算(||)
参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。口诀:一真为真
3) 非运算(!)
参与运算量为真时,结果为假;参与运算量为假时,结果为真。口诀:真变假,假变真
注意:
1)虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时, 以“0”代表“假”,以非“0”的数值作为“真”。
表达式1 |
表达式2 |
表达式1&&表达式2 |
表达式1||表达式2 |
!表达式1 |
!表达式2 |
假 |
假 |
假 |
假 |
真 |
真 |
假 |
真 |
假 |
真 |
真 |
假 |
真 |
假 |
假 |
真 |
假 |
真 |
真 |
真 |
真 |
真 |
假 |
假 |
6、优先级
逻辑运算符和其它运算符优先级的关系可表示如下:
7、逻辑运算符的短路问题
与短路:&& |
只要第一个条件表达为假那么后面的条件表达就不参与运算了 |
或短路:|| |
只要第一个条件表达式为真那么后面的条件表达式就不参与运算了 |
三、选择结构复习
1、if ...else ...语句使用
如果表达式为真,则执行语句块1,否则执行语句块2
if(表达式)
{
语句块1;
}
else
{
语句块2;
}
2、if语句嵌套
if(表达式1)
{
......
if(表达式2)
{
}
else
{
}
......}
else
{
}
3、if…else if语句
如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(表达式1)
{
语句块1
}
else if(表达式2)
{
语句块2
}
else if(表达式3)
{
语句块3
}
else
{
语句块4
}
-