一、操作符
1.三目操作符
exp1 ? exp2 : exp3
例:
//求两者中较大者
max = (a > b ? a : b)
2.~(按位取反)
3.&(取地址运算符)
4.*(指针运算符)
二、原码、反码、补码
在内存中,整数均用补码来存储,但在打印和使用中都是原码
其中正数的原、反、补码相同
而负数原码 -> 取反 --> 反码 -> 加一 --> 补码
int a = 0;
int b = ~a;
//a : 000...000(32位)
//b : 111...111(补码)
// 减一
// 111...110
// 取反
// 100...001(原码)
//第一位是符号位,不进行取反 0表示正数 1表示负数
三、EOF(end of file)
文件结束标志 ASCII码值:-1
四、常见关键字
auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while
五、typedef
类型重命名
typedef unsigned int uint_32;
//unsigned无符号
unsigned int num1 = 0;
uint_32 num2 = 0;
六、static
1.修饰局部变量
使局部变量的生命周期变长,即使定义的局部变量出了作用域依然存在直到程序结束
2.修饰全局变量
改变作用域,即使定义的全局变量只能在源文件内使用,不能在其他源文件内使用(不能被extern调用)
3.修饰函数
改变了函数的链接属性,使其从外部链接属性变为内部链接属性(同全局变量)
七、define定义宏
类似于函数,比函数精简
#define MAX(X,Y) (X > Y ? X : Y)
int MAX(int x, int y)
{
if(x > y)
{
return x;
}
else
{
return y;
}
}
八、指针
1.查看变量的地址
int num = 10;
# //取出num的地址
printf("%p\n", &num); //%p打印地址
2.定义指针变量(存储地址)
int num = 10;
int *p; //p为一个整形指针变量
p = #
例:
int a = 10; //在0x0012ff40这个位置处存放了10,名为a
int* p = &a; //将0x0012ff40这个位置的十六进制数存放在p内
*p = 20; //用*p找到a其中的10,把它换成20
//同样的
char ch = 'w';
char* pc = &ch;
*pc = 'a';
在32位操作系统中,地址占四个字节
在64位操作系统中,地址占八个字节