1 数据类型
C语言数据类型,按照数据类型的构造方式,可以分为基本数据类型、构造类型(也称派生类型)和其他类型。
数据类型 | 基本数据类型 | 整型 | 带符号整型 | 短整型 |
整型 | ||||
长整型 | ||||
无符号整型 | 无符号短整型 | |||
无符号整型 | ||||
无符号长整型 | ||||
浮点型 | 单精度浮点型 | |||
双精度浮点型 | ||||
字符型 | ||||
构造类型 | 数组类型 | |||
结构体类型 | ||||
共用体类型 | ||||
文件类型 | ||||
其他类型 | 指针类型 | |||
枚举类型 | ||||
空类型 |
类型 | 长度(Byte) | 取值范围 |
---|---|---|
char(字符型) | 1 | -128~127 |
unsigned char(无符号字符型) | 1 | 0~255 |
signed char(有符号字符型) | 1 | -128~127 |
int(整型) | 4 | -2147483648~2157483647 |
unsigned int(无符号整型) | 4 | 0~4294967295 |
signed int(有符号整型) | 4 | 同int |
short(短整型) | 2 | -32768~32767 |
unsigned short(无符号短整型) | 2 | 0~65535 |
signed short(有符号短整型) | 2 | 同short |
long(长整型) | 4 | -2147483648~2157483647 |
signed long(有符号长整型) | 4 | 同long |
unsigned long(无符号长整型) | 4 | 0~4294967295 |
float(单精度浮点型) | 4 | ,6位有效数字 |
double(双精度浮点型) | 8 | ,16位有效数字 |
2 常量
2.1数值型常量
2.1.1 整型常量
C语言中,整型常量有十进制、八进制和十六进制。
以0开头的数字十八进制数,以0x或0X开头的数字是十六进制数,其他情况是十进制数。
30——十进制正数
-30——十进制负数
0177——八进制正数
-0177——八进制负数
0xef——十六进制正数
-0xef——十六进制负数
2.1.2 实型常量
实型也成为浮点型、实数或者浮点数,分为十进制小数形式和指数形式。
(1)十进制小数形式:由数字0~9和小数点组成。
(2)指数形式:由十进制数(基数)、加阶码标志e或E以及指数(阶码,只能为正数可以带符号)组成。
一般形式:a E n(a为十进制数——基数,n为十进制正数——阶码)
其表示的值为
2.2 字符型常量
简称字符,是用单引号括起来的一个
字符,如'a','$'。
字符型数据在内存中存储该字符的ASCII码。
2.3 转义字符
字符形式 | 功能 | 字符形式 | 功能 |
---|---|---|---|
\0 | 字符串结束符 | \f | 走纸换页 |
\n | 换行 | \\ | 反斜杠字符\ |
\t | 横向跳格 | \' | 单引号字符 |
\v | 纵向跳格 | \'' | 双引号字符 |
\b | 退格 | \ddd | ASCII码为八进制数ddd的字符 |
\r | 回车 | \xhh | ASCII码为十六进制数hh的字符 |
2.4 字符串常量
简称字符串,用双引号括起来的零个或多个字符系列,如"a"、"23"、"abc"、"123h"、"你好"。
"a"包含两个字符 'a' 和 ‘\0’ ,在存储时占两个字节。
2.5 符号常量
用宏 # define 来定义符号常量,如 # define Pi 3.14,Pi就代表3.14.
一般形式: # define 标识符 常量
3 变量
3.1 变量的定义
变量是在程序运行中可以改变的量,通过数据类型来定义,在内存中占一定的存储空间。
3.2 变量的赋值
通过赋值运算符 “=” 改变变量的值。
格式:变量=表达式
4 运算符和表达式
4.1 算数运算符和算数表达式
4.1.1 算数运算符
(1)+ :加法运算符或正值运算符,如1+2,+3
(2)- :减法运算符或负值运算符,如2-1,-3
(3)* :乘法运算符,如1*2
(4)/ :除法运算符。如果参加除法运算为两个整数,则相除结果为正数,如5/2的结果为2,舍去小数部分;如果参加运算的两个数中有一个数为实数,则按实数进行运算,结果是实数,如5/3.0的结果为1.6667
(5)% :模运算符,或称求余运算符,要求%两侧均为整数数据,如7%2的结果为1
4.1.2 算数表达式和运算符的优先级与结合性
用算数运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的狮子,称为算数表达式。运算对象包括常量、变量、函数等,单独的常量或变量也是算数表达式。如:
40,a,x+y,x*y/z-1+'a'(字符a的ASCII码参与运算)
4.2 赋值表达式和复合赋值表达式
赋值运算符 “=” 在给变量赋值时,将左边的变量和右边的表达式连接起来构成的赋值表达式。赋值表达式的值是赋值后变量的值。如:
a=2
x += 3 //等价于 x=x+3
x*= y+1 //等价于x=x*(y+1)
x %= 8 //等价于x=x%8
复合赋值运算符:
(1)+= (2)-= (3)*= (4)/= (5)%= (6)<<= (7)>>= (8)&= (9)^= (10)|=
4.3 逗号表达式
用逗号把表达式连接起来得到的表达式成为逗号表达式。系统会逐个计算各个表达式的值,并把最后一个表达式的值作为逗号表达式的值。如:
int x=2,y=2,z;
z=(x+1,y++,x*y);
printf("%d",z); //此时x=2,y=3,输出结果6
4.4 自增自减运算符
自增运算符 “++” 的功能是使变量的值自增1。
自减运算符 “--” 的功能是使变量的值自减1。
都具有右结合性。
++i i 自增1后再参与其他运算。
--i i 自减1后再参与其他运算。
i++ i 参与运算后,i 的值再自增1
--i i 参与运算后,i 的值再自减1
自增运算符和自减运算符只能用于变量,不能用于常量或表达式。
4.5 强制类型转换符
将表达式的类型强制转换成小括号中的“数据类型名”所指定的类型。
一般形式:(类型说明符)表达式。如:
(int)a //将 a 转换为整型
(float)(x+y) //将 x+y 的结果转换为实型
4.6 关系运算符
(1)< :小于
(2)<= :小于等于
(3)> :大于
(4)>= :大于等于
(5)== :等于
(6)!= :不等于
4.7 逻辑运算符
(1)&&:逻辑与
(2)|| :逻辑或
(3)! :逻辑非
4.8 位运算符
(1)&:按位与
(2)| :按位或
(3)^ :按位异或
(4)~ :按位取反
(5)<<:位左移
(6)>>:位右移