(类型)强制类型转换,用法如下图所示:
只需要在想要转换类型的值前面加上(),括号里面的是放自己想要转换的类型,但一般不建议这么做
关系操作符: > >= < <= !=(不等于) ==(判断相等)
逻辑操作符:
&&(逻辑与)
当两边同时为真时才为真,0为假,1为真;
||(逻辑或)
当两边有一方为真时,就为真,只有同时为假时才判断为假;
条件判断符
也叫三目操作符
exp1?exp2:exp3 exp 表达式
如:max = (a>b?a:b);
逗号操作符
exp1,exp2......expn
位操作符
&(按位与)
如:a = 3,b = 5;
a&b = 1怎么得到1的呢,
就是同将值转换为二进制来进行判断,将每个相等权重的位来进行判断
只有同时为真时才为真,所以可以看的出来是等于1的
011
101
001
|(按位或)
如:a = 3,b = 5;
a|b =7 当有一个为真时就判断为真,只有都是假的时候才为假也就是0
011
101
111
^(按位异或)
如:a = 3,b = 5;
a^b =6 当有一个为真时就判断为真,当同时为真时就为假;
也就是当对应的二进制位相异时,等于1;
当对应的二进制位相同时,等于0;
011
101
110
——————————————————————————————————————————分割线
负数在内存中存储的时候,存储的是二进制的补码
使用的或者说打印出来的是这个数的原码
原码——>反码——>补码
原码——>反码:是将原码的二进制位按位取反,最高位的那个数也就是第一个数字保持不变;
反码——>补码:是在反码的基础上加上1
权重最高的那个数 0代表是正数,1代表的是负数。
如:a = 0;b = ~a; ~为取反
00000000000000000000000000000000 取反得到
11111111111111111111111111111111 这个为补码,打印出来的是原码,所以要转换
10000000000000000000000000000000 反码
10000000000000000000000000000001 原码 在反码的基础上加1
所以 b = -1
++ --
前置++,先++,再使用;
后置++,先使用,再++;
前置--,先--,再使用;
后置--,先使用,再--;
________________________________________________________________________________________________________________________________
常见关键字
auto break case char const continue default do double else enum
float for goto if int long register return short signed sizeof tatic
struct switch typedef union unsigned void volatile while extern
auto:每个变量前面都会自动生成一个auto,所以都会把它隐藏起来
register:寄存器关键字,编译器不会直接开放寄存空间,但会建议把变量定义为寄存器变量
signed:有符号数,int a = 10等价与 signed int a = 10只是把signed省略
unsigned:无符号数 定义的数都为正数
struct:结构体关键字
uncin:联合体/共用体
void:无/空
typedef
顾名思义是类型定义,这里应该理解为类型重命名
如:
unsigned int a = 10;
typedef unsigned int u_int ;
将nusigned int 这个类型名重新定义为u_int,两个方法构造出来的值没有任何差别
extern
用来调用外部变量或者函数
static
用来修饰变量
修饰局部变量:局部变量的生命周期变长,变量会从原来的不累计变为累计
修饰全局变量:改变了变量的作用域——让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法使用
修饰函数:改变了函数的作用域。但这个说法是不准确的,可以认为是static改变了函数的外部链接属性
从外部链接属性——>内部链接属性
#define
#define 定义的标识符常量:#define MAX 10;
#define 定义的宏:
#define MAX(X,Y) (X>Y?X:Y)
指针
指针变量,用来存放地址的
& 取地址符 %p 打印地址
int * 存地址(当变量类型为int 时)(如果类型是其他类型时,只需要相应的改变即可)
*解引用操作符
如:
int a = 10;
int* p = &a; //将a的地址存到p
*p = 20 //*p就是等于a
指针大小:在32位平台上是4个字节,在64位平台上是8个字节;