原码、反码、补码
二进制有:原码 反码 补码
计算机在任何情况下都只能识别二进制,在底层存储数据的时候,一律存储的是二进制的补码形式
- 对于一个正数来说:二进制原码、反码、补码是同一个,完全相同。
int i = 1;
二进制原码:00000000 00000000 00000000 00000001
二进制反码:00000000 00000000 00000000 00000001
二进制补码:00000000 00000000 00000000 00000001
- 对于一个负数来说:二进制原码、反码、补码是什么关系呢?
byte i = -1;
二进制原码:10000001
二进制反码(符号位不变,其它位取反):11111110
二进制补码(反码+1):11111111
运算符
单目运算 sizeof
1、数据类型/数组变量/指针: 返回所占用的内存字节数
sizeof(int);// 占4字节内存,根据编译器的版本决定
char a[] = “abc”;//sizeof(a)=4,字符串末尾还存在一个NULL终止符。
int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,
算术运算符 | 功能 | 优先级 |
---|---|---|
++ | 自增 | 2 |
– | 自减 | 2 |
*、/ | 乘除 | 3 |
% | 求余/取模 | 3 |
+、- | 加减 | 4 |
赋值运算符 | 功能 | 优先级 |
---|---|---|
= | 赋值 | 14 |
+= | 加后赋值 | 14 |
-= | 减后赋值 | 14 |
*= | 乘后赋值 | 14 |
/= | 除后赋值 | 14 |
%= | 取模后赋值 | 14 |
关系运算符 | 功能 | 优先级 |
---|---|---|
> | 大于 | 6 |
< | 小于 | 6 |
>= | 大于或等于 | 6 |
<= | 小于或等于 | 6 |
!= | 不等于 | 7 |
== | 相等 | 7 |
逻辑运算符 | 功能 | 优先级 |
---|---|---|
! | 逻辑非 | 2 |
&& | 逻辑与 | 11 |
|| | 逻辑或 | 12 |
位操作运算符 | 功能 | 优先级 |
---|---|---|
& | 按位与 | 8 |
| | 按位或 | 10 |
~ | 按位非 | 2 |
^ | 按位异或 | 9 |
>> | 右移(M>>N等于 M/2 的N次方) | 5 |
<< | 左移(M<<N等于 M*2 的N次方) | 5 |
数据类型
1 基本类型
整型变量|整型变量符|所占空间|
short|短整型|2Byte(16Bit)
int|整型|4Byte(32Bit)
long|长整型|4Byte(32Bit)
unsigned short |无符号短整型|2Byte(16Bit)
unsigned int|无符号整型|4Byte(32Bit)
unsigned long|无符号长整型|4Byte(32Bit)
实型变量|实型变量符|所占空间|
float|单精度|4Byte(32Bit)
double|双精度|8Byte(64Bit)
long double|长双精度|16Byte(128Bit)
字符变量|字符变量符|所占空间 |
char |字符| 1Byte(8Bit)
整型常量|实例|
八进制整型常量|012
十进制整型常量|12
十六进制整型常量|0x12
长整型常量|12L
实型常量|实型常量符|
小数形式|-12.5 、2.5
指数形式|2.5E5(2.5*10的5次方)
转义字符|含义
\n |换行
\b|退格
\r|回车
1.1 字符串处理函数
函数 | 含义 |
---|---|
char *strcpy(char *dest, const char *src) | 字符串复制函数 |
int strcmp(const char *str1, const char *str2) | 字符串比较函数 |
size_t strlen(const char *str) | 字符串长度测量函数 |
char *strcat(char *dest, const char *src) | 字符串连接函数 |
char *strstr(const char *haystack, const char *needle) | 字符串查找函数 |
char *strchr(const char *str, int c) | 字符查找函数 |
void *memset(void *str, int c, size_t n) | 字符复制函数 |
- strcpy(字符串复制函数)
作用是将 str2 复制到 str1 中去。
str1 的长度不能小于 str2 的长度 str1 必须为字符数组的形式、str2 可以为 字符串常量 和 字符组名
- strcmp(字符串比较函数)
因为字符串不能用等号来比较大小,所以就用 strcmp 函数来比较 比较 ASCLL码
比较的结果由函数值带回:
(1)如果字符串1与字符串2相同,则函数值返回为0。
(2)如果字符串1 > 字符串2,则函数值返回一个正整数。
(3)如果字符串1 < 字符串2,则函数值返回一个负整数。
- strlen(字符串长度测量函数)
返回字符串 s1 的长度。(不包括 ‘\0’ 在内)
- strcat(字符串连接函数)
作用是把两个字符数组中的字符串连接起来,把字符串2连接到字符串1的后面,结果放在字符数组1中
- strstr (字符串查找函数)
函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址(指针);否则,返回NULL。
- strchr(字符查找函数)
返回一个指针,该函数返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL。
- memset
复制字符 c 到str 的前n项,字符c 为 字符类型 acsll码
注意,如果字符 c 为 字符NULL ,十进制为 0的情况,此时的字符数组str必须要首地址才能重新赋值
2 构造类型
2.1 结构体:struct
结构体(struct)是具有相同类型或不同类型的数据构成的数据集合。
结构体的声明并不会分配内存空间,构造类型定义变量时才会为其相应的变量分配内存空间。
2.2 共用体:union
- 结构体与共用体的区别
结构体
结构体大小是 结构体内部的成员的空间大小之和
共用体
共用体内存长度是内部最长的数据类型的长度。
共用体的地址和内部各成员变量的地址都是同一个地址
2.3 数组
将数组名传入函数时, 该数组名称则再也不是数组的首地址, 会成为普通的指针
sizeof(arr)/sizeof(arr[0])
当前定义的函数内可以使用,传递后则不能使用
3 指针类型
3.1 函数指针、指针函数
指针函数,即本质是一个函数,函数返回类型是指针。
函数指针,即本质是一个指针变量,是指向函数地址的指针变量。