1. 基本数据类型
原码 反码和补码
正数的反码是其本身
负数的反码是在其源码的基础上,符号位不变,其余各个位取反
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1
1.1. 整数类型
int 占用4个字节 32个比特
long 占用8个字节 64个比特
short 占用2个字节 10个比特
1.2. 浮点类型
浮点类型一般用于保存小书
float 单精度浮点 占用4个字节 32个比特
double 双精度浮点 占用8个字节 64个比特
字符类型
char 占用1个字节 可以表示所有的ASCll码的字符 每一个数字对应的是编码表中的一个字符
编码表包含所有的常见的字符 ,包括运算符号 数字 大小写字母等
变量:
数据类型 变量名称 < 初始值
不能以数字开头,不能重复使用
不能使用关键字,可以包含数字但是不能数字开头
注意变量一定要先声明再使用
float 单精度浮点数 4个字节,32bit
double 双精度浮点数 8个字节,64bit
#include <stdio.h>
int main() {
double a;
a = 0.5;
int b = 2;
int c = a + b;
printf("a=%f, b=%d, c=%d", a , b, c);
return 0;
}
#include <stdio.h>
int main() {
double a = 3.5 ;
float b = 4.5 ;
printf("a = %f, b = %lf ", a ,b );
return 0;
}
1字符类型
char
变量
变量的使用
无符号数
类型转换
#include <stdio.h>
int main() {
double b = 3.74 ;
int i = b ;
printf("%d", i);
}
- 不同的类型优先级不同(根据长度而定)
- char和short类型在参与运算时一律转换为int再进行运算
- 浮点类型默认按双精度进行计算,所以就算有float类型,也会转换为double类型参与计算
- 当有一个更高优先级的类型和一个低优先级的类型同时参与运算时,统一转换为高优先级运算,比如int和long参与运算,那么int转换为long再算,所以结果也是long类型,int和double参与运算,那么先把int转换为double再算
运算符
基本运算符
加法:+
减法:-
乘法:*
除法:/
赋值:=
#include <stdio.h>
int main() {
int a = 10, b = 9;
printf("%d", a + b);
}
运算符的优先级
#include <stdio.h>
int main() {
int a = 20, b = 3;
printf("%d",a + b * b);
}
先算乘除后算加减
#include <stdio.h>
int main() {
int a = 20, b = 3;
printf("%d",((a + 6)*b)*b);
}
基本都用小括号
逗号运算符
逗号运算符从前往后依次执行,赋值结果时最后边的结果
自增自减运算符
a = a + 1 ;
++a ;
#include <stdio.h>
int main() {
int a = 11;
--a;
printf("%d", a);
}
重点内容:
自增运算符++在前,那么先自增再出结果;自增运算符++在后,那么先出结果再自增
复合赋值运算符
#include <stdio.h>
int main() {
int a = 11;
int b = a += 5;
printf("%d", a);
}
#include <stdio.h>
int main() {
int a = 11;
a--;
printf("%d", a);
}
位运算符
<<是让所有的bit位进行左移操作,上面就是左移1位
10 = 00001010 现在所有bit位置上的数据左移一位 00010100 = 20
左移
让这些2进制数进行乘2
右移
让这些2进制数进行除2
#include <stdio.h>
int main() {
int a = 6, b = 4;
int c = a & b;
printf("c = %d ", c);
}
按位与实际上也是根据每个bit位来进行比较
4 = 00001000
6 = 00000110
按位与实际上就是让两个数的每一位都进行比较,如果两个数对应的bit位都是1,其他情况一律为0
所以计算结果为:00000100 = 4;
除了按位与运算,还有按位或运算
#include <stdio.h>
int main() {
int a = 6, b = 4;
int c = a | b;
printf("c = %d ", c);
}
4 = 00001000
6 = 00000110
00000110 = 6
按位或实际上也是让两个数的每一位都进行比较,如果两个数对应bit位上其中一个是1,那么结果的对应的bit位上就是1,其他情况为0;
还有异和按位非
#include <stdio.h>
int main() {
int a = 6, b = 4;
int c = a ^ b;
printf("c = %d ", c);
}
^表示按位异或运算,让两个数的每一位都进行比较,如果两个数对应bit位上不同时为1或者同时为0时,那么结果就是1,否则结果就是0,所以这里结果为2
#include <stdio.h>
int main() {
int c;
c = 3;
// 00000011
printf("c = %d ", ~c);
}
~ 按位否定针对某个数进行操作,它会将这个数的每一个bit位都置反,0变成1,1变成0
按位运算都是操作数据底层的二进制位来进行的
逻辑运算符
&&逻辑与
||逻辑或
备注:如有错误,请谅解!
此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人