关系操作符
- 逻辑操作符
> >= < <= != ==
大于 大于等于 小于 小于等于 不等于 等于
- 逻辑操作符
&& ||
逻辑与 逻辑或
#include<stdio.h> int main() { //真-非0 //假-0 int a = 0; int b = 5; int c = a && b; int d = a || b; printf("c=%d\n", c);//c=0 printf("d=%d\n", d);//d=1 return 0; }
- 条件操作符(三目操作符)
exp1 ? exp2 : exp3
表达式1的结果为真,表达式2执行,代表整个表达式的结果
表达式1的结果为假,表达式3执行,代表整个表达式的结果
#include<stdio.h> int main() { int a = 10; int b = 20; int max = 0; max = (a > b ? a : b); //exp1 ? exp2 : exp3 printf("max=%d\n", max); return 0; }
- 逗号表达式
exp1,exp2,exp3
- 下标引用、函数调用和结构成员
[ ] ( ) . ->
#include<stdio.h> int Add(int x, int y) { int z = 0; z = x + y; return z; } int main() { int arr[10] = { 0 }; arr[4];//[]--下标应用操作符 int a = 10; int b = 20; int sum = Add(a, b);//()-函数调用操作符 return 0; }
原码、反码、补码
原码 反码 补码
按照正负 原码符号位不变 反码+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
计算大小 静态 结构体关键字 类型定义 联合体/共用体 定义变量无符号 空
#include<stdio.h> int main() { auto int a = 10;//局部变量-自动变量,可以省略 register int a = 10;//建议把a放入寄存器中 return 0; }
#include<stdio.h> int main() { //typedef--类型定义,类型重定义 typedef unsigned int u_int;//起了别名 unsigned int num = 20;// 定义变量无符号 u_int num2 = 20; return 0; }
#include<stdio.h> void text() { //static 修饰变量和关键词 static int a = 1;//a--静态局部变量 a++; printf("a=%d\n", a);//2 3 4 5 6 } int main() { int i = 0; while (i < 5) { text(); i++; } return 0; }
static int g_val=2020 #include<stdio.h> //static 修饰全局变量 //改变变量作用域,静态的局部变量只能在源文件内部使用 int main() { //extern 引入外部符号 extern int g_val; printf(" g_val=%d\n", g_val); return 0; }
static int Add(int x, int y) { int z = x + y; return z; } #include<stdio.h> //#define定义标识符常量 //#define定义宏-带参数 #define MAX 100 int main() { int a = MAX; return 0; } #include<stdio.h> //static 修饰函数,改变函数连接属性,变成内部链接 //函数具有外部链接属性 extern int Add(int, int);//申明外部函数 int main() { int a = 10; int b = 20; int sum = Add(a, b); printf(" sum=%d\n", sum); return 0; }
#define定义和宏
#include<stdio.h> int Max(int x, int y) { if (x > y) return x; else return y; } //宏定义 #define MAX(X,Y)(X>Y?X:Y) int main() { int a =10; int b = 20; //函数 int max = Max(a, b); printf("max=%d\n", max); //宏的方式 max = MAX(a, b); printf("max=%d\n", max); return 0; }
指针p
内存的概念:1字节,内存单位地址
32位,即32位数据线/地址线,受到正电(1)和负电(0)会产生232bit位
#include<stdio.h> //指针 int main() { int a = 10;//创建空间a,存储为10 int* p = &a;//取地址a,存储在p中 printf("%p\n", &a);//009EFBDC printf("%p\n", p);//009EFBDC *p = 20;//20存储到a中 printf("a=%d\n", a); return 0; }
#include<stdio.h> int main() { char ch = 'w'; char* pc = &ch; *pc = 'a'; printf("%c\n", ch); return 0; }
指针变量的大小
#include<stdio.h> int main() { printf("%d\n",sizeof(char *)); printf("%d\n",sizeof(short *)); printf("%d\n", sizeof(int *)); printf("%d\n", sizeof(double *)); return 0; }
指针大小在32位平台是4个字节,64位平台是8个字节