数据类型(32位操作系统)
char
1个字节,8位
值域:-128~ 127 或 0~255
signed char :(-2^7) ~ (2^7-1)
unsigned char :0~2^8-1
正数:原码、反码、补码都一样
反码:原码取反
补码:反码加1
short
2个字节,16位
值域:-32768~ 32767或0~65535
signed short :-2^15 ~ 2^15-1
unsigned short :0~65535
int
4个字节,32位
值域:-2^31~ 231-1或0~232-1
signed int :-2^31~ 2^31-1
unsigned int :0~2^32-1
浮点
-
单精度float:
4个字节,32位
精度:6~7 -
双精度double:
8个字节,64位
精度:15~16
强制类型转换
- 显示转化:(数据类型)变量名
int a = 10;
float f = (float)a; - 隐式转换
注意:强制类型转换不会改变变量的数据类型
常量
-
定义:在程序运行过程中,值不被修改
12 ‘A’ 023 0x123 ”hello“ -
整型常量:123 067 0x12
-
字符常量: ’c‘ ‘G’
用单引号引起来的单个字符(单单)
‘ddd’ -->不合法
‘\0’ ‘\t’ ‘\n’ ‘\’ -->合法 -
字符串常量:
用双引号引起来的,以’\0’结尾
“hello world” “你好” ”9“ -
标识常量:
宏(define)
#define 标识常量名 常量
#define MAX 10
注意:原样展开 -
浮点常量:
小数:0.125 -
指数常量:
形式:[+/-]M.N e/E [+/-]T
注意:e/E前e/E必有数,e/E必为正数
-1e0.7 -->不合法
0.2e2 --> 0.2*10^2
变量类型
- 一般形式:【存储类型】【数据类型】【变量名】
- 存储类型:
auto: 自动存储类型,可省,默认为auto
register :寄存器存储类型,需要申请,申请失败自动转成auto
static :
1.局部变量:定义在模块内,作用在模块内,不赋初值,是个随机值
2.全局变量:定义在模块外,作用整个文件,不赋初值,系统自动赋0
3.static修饰局部变量:延长其生命周期,但是作用域不变,初始化时自动赋零;
4.static修饰全局变量:限制其作用域,但生命周期不变;
5.static修饰函数:仅在本文件中使用; - extern :外部引用
运算符
-
根据操作数分类: 单目运算符、双目运算符、三目运算符
&a a + b (a > b)?a:b -
算术运算符:
+ - * / %
注意:
除法(/):取整数部分,不进行四舍五入 8/3 = 2
取余(%):浮点数不能进行取余 -
逻辑运算符:
&& || !
运算规则:
0为假,非0为真
1.逻辑与&&:两边为真才为真
0 && 0 = 0
0 && 1 = 0 有0为假,全1为真
1 && 1 = 1
2.逻辑或||:一边为真即为真
0 || 0 = 0
0 || 1 = 1 有1出1, 全0位假
1 || 1 = 1
3.非!:取反
!1 = 0
!0 = 1
*短路法则:当编译器得到结果后,就不再往下执行 -
关系运算符:
< > <= >= == -
位运算符:
对二进制数进行运算
& | ^ ~ << >>
位与&:两边为真才为真
0 & 0 = 0
0 & 1 = 0 有0为假,全1为真
1 & 1 = 1
位或|:一边为真即为真
0 | 0 = 0
0 | 1 = 1 有1出1, 全0位假
1 | 1 = 1
异或^(生小孩符号):0代表女生,1代表男生
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 1 = 0 -
赋值运算符:
=(右边的值赋予左边,不是等于!!!) -
复合赋值运算符:
+= /= *= ^= ~=
a += b --> a = a+b
a X= b --> a = a X b(乘号不便打出,用X代替)
a <<= 2 --> a = a<<2 -
递增递减运算符:
递增运算符:++ -->操作数自增1
递减运算符:-- -->操作数自减1
a++ --> a = a+1
++a --> a = a+1
a-- --> a = a-1
–a --> a = a-1
注意:加加在前,先加后用;加加在后,先用后加
int a = 2;
++a;//3,a = 3
a++;//3,a = 4
a; //4 -
地址运算符:
& int a; &a ----> 获取a 的地址。打印 : %p
&变量名 -
逗号运算符:
(表达式1, 表达式2, 表达式3,… ,表达式n)= 表达式n
注意:从左往右依次计算,取最后一个表达式的结果作为整个逗号表达式的结果 -
sizeof运算符:
求字节数
sizeof(变量名/数据类型名);