如果有理解不对的地方希望看到本文章的同志们能够指正;
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
//int main()
//{
// char ar[] = { "abc" }; //字符串结束标志为\0 字符串就是一串字符可以为abc,可以为hello,并且在结尾的位置隐藏了一个/0
// char br[] = { 'a','b','c',0 }; //使用strlen标识符需要有#include<string.h>的头文字定义
// int len = strlen(ar); //strlen 用于求字符串的长度
// printf("ar=%s\n br=%s\n", ar, br);
// printf("ar长度为%d\n", len);
// printf("br长度为%d\n", strlen(br));
// return 0;
//}
//
//
//#define MAX 10000 //define定义的标识符常量
//int main()
//{
//int n = MAX;
//printf("n = %d\n", n);
//return 0;
//}
//const修饰的常变量
//const int num=10 加上const就是将这个变量锁住,之后无法在赋值更改。
// // 枚举常量 可以一一列举的常量 关键字 enum
// enum sex
//{
// boy,
// girl=3,//赋初值
// secret
//};
//字符数组 数组是一种相同类型的元素
//int main()
//{
// int a = 9,
// b = 8,
// c, d;
// c = a + b;
// printf("d=%d\n", d = a + b);
// return 0;
//}
//转义字符 转变了他原来的意思
//\n 换行
// int main()
//{
// printf("ab\ncd");
//}
//printf在打印数据时,可以制定打印格式
//int main()
//{
// printf("%d\n", 100);//% d打印整形
// printf("%c\n", 'c');//% c打印字符
// printf("%s\n", "abc");//% s打印字符串 \\表示一个反斜杠,防止要打印的内容中所包含的斜杠被解释为一个转义字符
//}
// %a(%A) 打印浮点数、十六进制数字和p-(P-)记数法(C99)
// %c 打印字符
// %d 打印有符号十进制整数
// %f 打印浮点数(包括float和double)
// %lf 打印双精度浮点数(double)
// %e(%E) 打印浮点数指数输出[e-(E-)记数法]
// %g(%G) 打印浮点数不显无意义的零"0"
// %i 打印有符号十进制整数(与%d相同)
// %u 打印无符号十进制整数
// %o 打印八进制整数 e.g. 0123
// %x(%X) 打印十六进制整数< ? xml : namespace prefix = st1 / >() e.g. 0x1234
// %p 打印指针
// %s 打印字符串
// %% 打印"%"
//int main()
//{
// int input = 0;
// printf("要好好学习吗(1/0)?>:\n");
// scanf("%d\n", &input);
// if (input == 1)
// printf("好offer!!\n");
// else
// printf("卖红薯!!\n");
// return 0;
//}
//int num = 10;
//int main()
//{
// {
// int num = 1; //此处的num=1为局部变量;只作用于他所在的大括号内;
// printf("%d\n", num);//全局变量可以作用于整个工程内;
//
// }
// printf("%d\n", num);
// return 0;
//}
#include<stdio.h>
//int main()
//
//{
// int s = 0;
// while (s < 30000)
// {
// printf("写代码%d\n", s); //循环语句
// s++;
// }
// if (s == 30000)
// {
// printf("起飞\n");
// }
// return 0;
//}
//int main()
//{
// int sz[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建数组
// char sz2[5] = {'a','b','c'};
// int sum = 0;
// sum = sz[0] + sz[1];
// printf("sum=%d\n", sum);//访问数组 用下标来访问
// printf("%d\n", sz[3]); //[]用于访问数组中的元素,[]中添加数组中元素对应的角标;
// printf("%c\n", sz2[0]);
// return 0;
//}
//int main()
//{
// int a,b,c,d,e,f,g;
// scanf("%d%d", &a, &b); //算术操作符 加减乘除 %为取余 /只能得到商,不能得到余数 /除号两端有一个书是小数,并定义进浮点型float则可以得到带小数的商;
// c = a + b;
// d = a * b;
// e = a % b;
// f = a / b;
// printf("c=%d\nd=%d\ne=%d\nf=%d\n", c, d,e,f);
// return 0;
//}
// << , >>左移 右移操作符 移动的是二进制位
// 位操作符 &按位与
// |按位或
// ^按位异或
// 赋值操作符 = += -= *= /= &= ^= |= >>= <<=
// 双目操作符比如a+b +有两个操作符成为双目操作符
// 单目操作符!逻辑反操作, -取负值, +取正值, &取地址, sizeof取操作数的类型长度, ~对一个数的二进制进行按位取反, ——, ++前置后置
// int main()
//{
// int a = 2;
// int b = 0;
// a = a + 5;
// a += 5; //也可以叫复合赋值;
// printf("%d\n", a);
// printf("%d\n", !a); //!逻辑反操作,如果一个数不为0,则将其变为0,;若为0,则变为1;
// printf("%d\n", !b);
// return 0;
//}
//0表示假,非0表示真;
//int main()
//{
// int a = 0;
// if (a)
// { //a为真,进此循环
// }
// if (!a)
// { //a为
// }
// return 0;
//}
//int main()
//{
// bool a = 1;
// printf("%d\n", ~a);
// return 0;
//}
//int main()
//{
//int a = 10;
//int b = ++a;//前置++ 先++后使用 运行后b=11;并且a也加1,a=11;
//printf("%d\n", b);
//printf("%d\n", a);
//return 0;
//int a = 10;
//int b = a++;//后置++ 先使用后++ 运行后b=10;而a加1,a=11;
//printf("%d\n", b);
//printf("%d\n", a);
//return 0;
//int a = 5; -- 与 ++ 计算方式相同
//int b = a--;
//printf("%d\n", a);
//printf("%d\n", b);
//}
//强制类型转换操作符 略
//关系操作符 ==(用于判断是否相等) !=(用于判断是否不等) > < >= =<
//逻辑操作符 &&逻辑与 ||逻辑或
//int main()
//{
// int a = 5, b = -6;
// int c = a && b; //a& &b 两个数都为正或都为负则为真输出1 有一个数为正一个数为负或两个数都为0则为假输出0
// printf("%d\n", c);
// return 0;
//}
//{
// int a = 2, b = 0; //a||b 有一个为正则为正,输出1,两个都为负或都为0则为假,输出0
// int c = a || b;
// printf("%d\n", c);
// return 0;
//}
//条件操作符(三目操作符) exp1 ? exp2 : exp3
// 若exp1成立,则exp2计算,整个表达式的结果为exp2的结果;
// 若exp1不成立,则exp3计算,整个表达式的结果为exp3的结果;
// 例 比较两个数大小
//int main()
//{
// int a = 3, b = 4;
// int MAX = 0;
// if(a>b)
// {
// MAX = a;
// }
// else
// {
// MAX = b;
// }
// printf("%d\n", MAX);
//
// return 0;
//}
//上段代码也可写为;
//int main()
//{
// int a = 5, b = 4, MAX = 0;
// MAX = a > b ? a : b;
// printf("%d\n", MAX);
// return 0;
//}
//逗号表达式 逗号隔开的一段表达式 exp1,exp2,exp3,exp4,.......expn;
//int main()
//{
// int a = 1, b = 2, c = 3, d = 0;
// d = (a = b + 2, c = a - 4, b = c + 2); //从左到右依次计算,最后一个表达式的结果为整个表达式的结果;所以a=2+2=4,c=4-4=0,b=0+2=2,所以d输出为2;
// printf("d=%d\n", d);
// return 0;
//}
//函数调用操作符
//int main()
//{
// printf("hehe\n");//调用函数的时候,函数名后面的括号就是函数调用操作符;
// return 0;
//}
///常见关键字
//1.关键字只能使用C语言提供的,不能自己创建关键字;
//2.关键字不能做变量名;
//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
//auto 自动 每个局部变量都是auto修饰的;
//extern 用来声明外部符号的;
//register 寄存器关键字;
//signed 有符号的 10 -20
//unsigned 无符号的
//static 静态的
//struct 结构体
//typedef 类型重命名
//union 联合体(共用体)
//void 无(空)
//define include 为预处理指令,不属于关键字;
//typedef类型重命名
//例
//typedef unsigned int u_int;
//int main()
//{
// unsigned int a = 100;//typedef 将unsigned int 重新命名为u_int;之后所有的unsigned int 都可写为u_int;
// u_int a = 100; //以上一句含义完全相同
// return 0;
//}
//static 静态的 修饰局部变量 修饰全局变量 修饰函数
// 修饰局部变量可以使局部变量生命周期延长(本质上是改变存储类型),不被销毁;
//修饰全局变量使全局变量只能在它所在的.c源文件中使用,不能在其他.c源文件中使用;(全局变量具有外部链接属性,stasic修饰后只剩内部连接属性)
//修饰函数使函数只能在它所在的.c源文件中使用,不能在其他.c源文件中使用;(函数具有外部链接属性,stasic修饰后只剩内部连接属性)
//int acc()
//{
// int a = 1;
// a++;
// printf("%d\n", a);
//}
//int main()
//{
// int i = 0;
// while (i < 10)
// {
//
// i++;
// }
// return 0;
//}
//void acc()
//{
// static int a = 1;
// a++;
// printf("%d\n", a);
//
//}
//int main()
//{
// int i = 0;
// while (i < 10)
// {
// acc();
// i++;
// }
//
// return 0;
//}
//define 定义常量和宏
//1.定义常量:#define MAX 1000
//2.定义宏:
//#define ADD(X,Y) X+Y
//int main()
//{
// printf("%d\n", ADD(4, 5));
// return 0;
//}