\0的ASCII值为0
字符‘0’->48
EOF 文件结束标志 end of file
int a = 0;
int b = ~a;
printf("%d\n", b);//~按(2进制位)位取反
输出-1
a对应于00000000000000000000000000000000这里是32个0
按位取反后为32个1
//原码,反码,补码
//负数在内存中存储的时候,存储的时候二进制的补码。
打印的是原码,原码符号位不变,其他位取反得反码,加一等补码
111111111111111111111111111111111111111111
111111111111111111111111111111111111111110
1000000000000000000000000000000000001得出-1
b= a++先使用a的值,再++
逻辑与&&
逻辑或 ||
条件操作符 exp1?exp2:exp3;
假如exp1为真则执行exp2,否则执行exp3
int a = 3;
int b = 5;
int max;
a > b ?max = a : max=b;
printf("%d\n", max);
逗号表达式
exp1,exp2,exp3,...expn;
typedef类型重定义
static修饰局部变量
局部变量的生命周期变长
static修饰全局变量
改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用
出了源文件就没法使用
extern int Add(int, int);可以调用外部的函数和变量
static修饰函数,改变了函数的链接属性,如果没被修饰就具有外部链接属性,修饰之后只有内部
链接属性。
#define MAX 100定义标识符常量
#define可以定义宏 带参数
#define MAX(X,Y) (X>Y?X:Y)//宏定义函数
int main()
{
int a = 10;
int b = 20;
//int sum = MAX;
//printf("%d\n", sum);
int max;
max = MAX(a, b);
printf("%d\n", max);
return 0;
}
内存如何产生地址?32位是指有32根地址线,有正点和负电的区分
内存中一个区存储的是一个字节
int a =10;申请4个字节空间
64位电脑一个指针64个bit位