第一章 C数据类型及语句02
第一章 C数据类型及语句02
为巽1.2 数据类型
1.2.1 基本类型
char 、short int 、int、long int、float、double
1.2.2 构造类型
由若干个相同或不同类型数据构成的集合,这种数据类型被称为构造类型
1 | int a[10]; |
格式化输出字符:
%d 十进制有符号整数
%ld 十进制 long 有符号整数
%u 十进制无符号整数
%o 以八进制表示的整数
%x 以十六进制表示的整数
%f float 型浮点数
%lf double 型浮点数
%e 指数形式的浮点数
%c 单个字符
%s 字符串
%p 指针的值
特殊应用:
%3d 要求宽度为 3 位,如果不足 3 位,前面空格补齐;如果足够 3 位,此语句无效
%03d 要求宽度为 3 位,如果不足 3 位,前面 0 补齐;如果足够 3 位,此语句无效
%-3d 要求宽度为 3 位,如果不足 3 位,后面空格补齐;如果足够 3 位,此语句无效
%.2f 小数点后只保留 2 位
1.2.3 类型转换
自动转换:
遵循一定的规则,由编译系统自动完成.
强制类型转换:
把表达式的运算结果强制转换成所需的数据类型
自动转换的原则:
1、 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低.
2、 转换方向:
1.2.4 指针
1.3 运算符
1.3.1 运算符
用运算符将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C表达式运算对象包括常量、变量、函数等
1.3.2 运算符的分类:
1、双目运算符:即参加运算的操作数有两个
例: +
a+b
2、单目运算符:参加运算的操作数只有一个
++自增运算符 给变量值+1
–自减运算符
int a=10;
a++;
3、三目运算符:即参加运算的操作数有 3 个
()?():()
1.3.3 算数运算符
+ - _ / % += -= _= /= %=
1.3.4 关系运算符
(>、<、= =、>=、<=、!= )
1.3.5 逻辑运算符
1、&& 逻辑与
两个条件都为真,则结果为真
if((a>b) && (a<c))
2、|| 逻辑或
两个条件至少有一个为真,则结果为真
if((a>b) || (a<c))
3、! 逻辑非
if(!(a>b))
{
}
1.3.6 位运算符
1、&按位与
任何值与 0 得 0,与 1 保持不变
使某位清 0
0101 1011 &
1011 0100
0001 0000
2、| 按位或
任何值或 1 得 1,或 0 保持不变
0101 0011 |
1011 0100
1111 0111
3、~ 按位取反
1 变 0,0 变 1
0101 1101 ~
1010 0010
4、^ 按位异或
相异得 1,相同得 0
1001 1100 ^
0101 1010
1100 0110
5、位移
>>右移
<< 左移
注意右移分:逻辑右移、算数右移
(1)右移
逻辑右移 高位补 0 低位溢出
算数右移 高位补符号位,低位溢出
(2)、左移**<< 高位溢出,低位补 0
5<<1
1.3.7 条件运算符号
()?():()
A?B:C;
如果?前边的表达式成立,整个表达式的值,是?和:之//间的表达式的结果否则是:之后的表达式的结果
1.3.8 逗号运算符
(… , … , …)
例如:A = (B , C , D)
1.3.9 自增自减运算符
++ ++i 先加 ,后用
--
i++ i–
1.3.10 运算符优先级表
1.4 控制语句相关关键字
1、 if 语句
形式:
- if(条件表达式)
{ //复合语句,若干条语句的集合
语句 1;
语句 2;
}
如果条件成立执行大括号里的所有语句,不成立的话大括号里的语句不执行
1 |
|
- if(条件表达式)
{
语句块 1
}
else
{
语句块 2
}
if else 语句的作用是,如果 if 的条件成立,执行 if 后面{}内的语句,否则执行 else 后的语句
1 |
|
- if(条件表达式)
{
}
else if(条件表达式)
{
}
else if(条件表达式)
{
}
else
{
}
在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句, 下边的就不再判断了,各个条件判断是互斥的
1 |
|
2、 switch 语句
switch(表达式)//表达式只能是字符型或整型的(short int int long int)
{
case 常量表达式 1:
语句 1;
break;
case 常量表达式 2:
语句 2;
break;
default:
语句 3;
break;
}
1 |
|
1.4.2 循环控制语句相关的关键字
1、 for 循环
for(表达式 1;表达式 2;表达式 3)
{//复合语句,循环体
}
第一次进入循环的时候执行表达式 1,表达式 1 只干一次,
表达式 2,是循环的条件,只有表达式 2 为真了,才执行循环体,也就是说
每次进入循环体之前要判断表达式 2 是否为真。
每次执行完循环体后,首先执行表达式 3
1 |
|
2、 while 循环
- 形式 1:
while(条件表达式)
{//循环体,复合语句
}
进入 while 循环的时候,首先会判断条件表达式是否为真,为真进入循环体,否则退出循环
1 |
|
- 形式 2 : do
do{//循环体
}while(条件表达式);
先执行循环体里的代码,然后去判断条件表达式是否为真,为真再次执行循环体,否则退出循环
1 |
|
形式 1 和形式 2 的区别是,形式 1 先判断在执行循环体,形式 2 先执行循环体,再判断
break 跳出循环
continue 结束本次循环,进入下一次循环
1 |
|
3、 goto
1 |
|