数据类型和算数运算符
数据类型
数据类型相关的关键字
void关键字
- 不能定义类型,没有void类型的变量
- 修饰函数参数和返回值,代表没有参数和返回值
存储相关关键字
register, static, const, auto, extem
register
- 告诉编译器这个变量是寄存器变量,尽量将其存储空间放到寄存器之中
register char a = 'a';
register short b;
register int c;
- 因为寄存器变量理论上存在寄存器中,所以不能取地址,只有存在内存中的数据才有地址
static
- 修饰全局变量,局部变量,函数
const
- 修饰常量,修饰后的量变成只读的,不能在修改它的值了
auto
auto int a 和 int a 基本等价,了解即可
extern
- 外部的意思,一般用于函数和全局变量的声明
控制语句相关关键字
if ,else , break, for, while, do, switch ,case, goto, default
其他关键字
- sizeof
//sizeof 测试变量,数组所占内存空间大小,单位字节
int a = 10;
int num = sizeof(a); //4
- typedef
//typedef 为一个已有的类型重新起个类型名,并没有创建一个新的类型
typedef int SSNAME; //定义在最前面
SSNAME newvalue = 2222; //可以使用了
- volatile
//告诉cpu每次用volatile变量时,重新去内存中去,保证每次都是最新的值,而不是寄存器的备份
//现在较少使用
volatile int c = 25;
基本数据类型
- 字符变量
//字符数据
//直接常量 如 'a','b','c'
//转义字符 如 '\n','\t'
//字符变量
char a = 'a';
char b = 66;
printf("a=%c,b=%c", a, b); //a=a,b=B
- 整型变量
//整型数据
//有/无符号短整型 short 2 个字节
//有/无符号整型 int 4 个字节
//有/无符号长整型 long 4 个字节
//按照进制分
//10进制 数字1-9开头
int int1 = 12;
//8进制 数字 0开头
int int2 = 012;
//16进制 数字0x开头
int int3 = 0x13;
printf("10进制=%d,8进制=%d,16进制=%d\n", int1, int2,int3);//10进制=12,8进制=10,16进制=19
- 浮点类型
//浮点型数据
//double float ,不加f都是double类型
//科学计数法
double double1 = 123e-3; //123*10^-3
printf("double1=%f", double1); //double1=0.123000
格式化输出字符
符号 | 含义 |
---|---|
%d | 十进制有符号整数 |
%u | 十进制无符号整数 |
%x | 十六进制表示的整数 |
%o | 八进制表示的整数 |
%f | float型浮点数 |
%if | double型浮点数 |
%e | 指数形式的浮点数 |
%s | 字符串 |
%c | 单个字符 |
%s | 字符串 |
%p | 指针的值 |
特殊应用 |
%3d 要求宽度为3位,不足3位,前面空格补齐
%03d 要求宽度为3位,不足3位,前面0补齐
%-3d 要求宽度为3位,不足3位,后面空格补齐
%.2f 小数点后保留两位
类型转换
- 自动类型转换
char,short -> signed int -> unsigned int -> long -> float -> double
- 强制类型转换
//强制类型转换
//(类型说明符)表达式
double type1 = 8.125;
int type2 = (int)type1;
printf("type2=%d,sizeof = %d\n",type2,sizeof(type2)); //type2=8,sizeof = 4
运算符
算数运算符
//算数运算符
// + ,- ,* ,/ ,+= ,-= ,*= ,/= , %=
关系运算符
//关系运算符
// > , < , >= , <= , == , !=
逻辑运算符
//逻辑运算符
// 逻辑与
//&&
//逻辑或
//||
//逻辑非
//!
条件运算符
//条件运算符
// 条件表达式 ? 结果为真 : 结果为假
2 < 3 ? printf("是的,小于三\n") : printf("不对,大于三\n"); //是的,小于三
自增自减运算符
//自增自减运算符
// ++ 自增
// -- 自减
int data1 = 10;
int data2 = 10;
int data3 = 10;
int data4 = 10;
printf("data1 = %d\n", data1++); //先使用,后自增 data1 = 10
printf("data1实际的值 = %d\n",data1); //值已经改变 data1实际的值 = 11
printf("data2 = %d\n", ++data1); //先自增,后使用 data2 = 12
printf("data3 = %d\n", data3--); //先使用,后自减 data3 = 10
printf("data3实际的值 = %d\n", data3); //值已经改变 data3实际的值 = 9
printf("data4 = %d\n", --data4); //先自减,后使用 data4 = 9