目录
一、基本数据类型
1、整数类型:不包含小数点的数据,如1,99, 555等
2、浮点类型:用于保存小数
3、字符类型:保存字符
二、变量的创建与使用
1、变量的使用
2、基本运算
三、格式控制符
四、定义常量
五、无符号数
六、类型转换
七、基本运算符
八、位运算符
九、逻辑运算符
int - 占用4个字节,32个bit位
long - 占用8个字节, 64个bit位
short - 占用2个字节, 16个bit位
float - 单精度浮点,占用4个字节, 32个bit位
double - 双精度浮点, 占用8个字节, 64个bit位
char - 占用1个字节 表示所有的ASCII码字符
ASCII自行查询
转义字符:常见的有
\n 换行
\r 回车
声明一个整数类型的变量。注:不能重复使用;只能包含英文字母或下划线、数字,严格区分大小写;不能以数字开头;不能是关键字
int a = 10;
int a = 10, b = 20;
#include
int main() {
int a = 10, b = 20;
int c = a + b;
printf("c的结果是:%d", c);
return 0
}
%d表示一个整数类型的数据(占位符), 在打印时会自动将c的值替换
%c 输出一个单一的字符
%hd %d %ld 以十进制、有符号的形式输出short、int、long类型的整数
%ho %o %lo 以八进制、不带前缀、无符号的形式输出short、int、long类型的整数
%hx %x %lx
%hX %X %lX 以十六进制、不带前缀、无符号的形式输出short、int、long类型的整数,如果x小写,那么输出的十六进制数字也小写;如果X大写,那么输出的十六进制数字也大写
%f %lf 以十进制的形式输出float、double类型的小数
%s 输出一个字符串
#include
int main() {
double a = 0.5;
float f = 0.5f;
double k = a * f;
printf("f=%f\na = %lf\nk = %.2lf", f, a, k);
return 0
}
其中,%.2lf表示保留两位小数
const关键字
#include
int main() {
const int a = 10;
printf("%d", a);
}
考虑符号表示范围:-128~127
不考虑符号:0~255
int main(){
unsigned char c = -65;
printf("%u", c); //%u以无符号形式输出十进制
}
char类型占据一个字节,8个bit位
00000000 → 现在赋值-65 → -65的补码形式 → 10111111
由于现在没有符号位,一律都是正数,所以,10111111 = 128 + 32 + 16 + 8 + 4 + 2 + 1 = 191
自动类型转换
int main() {
short s = 10;
int i = s;
}
注意转换类型的最大值,如下
int main() {
int a = 511;
char b = a;
printf("%d", b);
}
//结果为-1
511 = int → 00000000 00000000 00000001 11111111
char → 11111111 → -1
char和 short都是先转换为int再计算
强制类型转换
int main () {
double d = 10.5;
int a = (int) (d + 2.8);
printf("%d", a);
}
int main() {
int a = 10, b = 5;
printf("%d", a + b);
}
运算优先级
先括号再乘除再加减
自增自减运算符
int a = 10;
++a;
++a等价于int a = 10
++a在此处也可以写成a++
# include
int main() {
int a = 10;
int b = a++;
printf("%d", b);
}
此时b输出为10
注:自增运算符++在前,先自增再出结果;++在后,先出结果再自增
--a;
a %= 3;
a /= 3;
a *= 2;
同理
#include
int main() {
int a = 10;
a = a << 1; // a <<= 1
printf("%d", a);
}
<<表示让所有的bit位进行左移操作
10 = 00001010 bit位上的数据左移一位 00010100 = 20
左移一位就乘2
a >>= 1;
右移则除以2
按位与操作
#include
int main() {
int a = 6, b = 4;
int c = a & b;
printf("c = %d", c);
}
4 = 00000100
6 = 00000110
4 = 00000100
让两个数的每一位进行比较,如果两个数对应的bit位都是1,那么结果的对应bit位上就是1, 其他情况一律为0
故计算结果为 4 = 00000100
按位或运算
int a = 6, b = 4;
int c = a | b;
4 = 00000100
6 = 00000110
让两个数的每一位进行比较,如果两个数对应的bit位其中一个是1,那么结果的对应bit位上就是1, 其他情况一律为0
#include
int main() {
int a = 10;
_Bool c = a < 0;
printf("c = %d", c);
}
判断a是否小于0,是则返回1,否则返回0
#include
int main() {
char c = 'D';
printf("c是否为大写字母:%d", c >= 'A' && C <= 'Z');
}
判断c是否为大写字母
#include
int main() {
char c = 'D';
printf("c是否不为大写字母:%d", c >= 'A' || C <= 'Z');
}
判断c是否不为大写字母
#include
int main() {
char c = 'D';
printf("c是否为A:%d", c == 'A');
}
判断c是否为A
#include
int main() {
char c = 'D';
printf("c是否为A:%d", c != 'A');
}
判断c是否不为A
三目运算符
#include
int main() {
int i = 0;
char c = i > 10 ? 'A' : 'B';
printf("%d", c);
}
符合则返回前者,否则返回后者