目录
6选择语句
7循环语句
8函数
9数组
10 *** 作符
算术 *** 作符
移位 *** 作符
移位 *** 作符
位 *** 作符
赋值 *** 作符
单目 *** 作符
逻辑 *** 作符
关系 *** 作符
逻辑 *** 作符
条件 *** 作符
逗号表达式
下标引用、函数调用和结构成员
11常见关键字
6选择语句
if
switch
#include7循环语句int main() { int coding = 0; printf("你会去敲代码吗?(选择1 or 0):>"); scanf("%d", &coding); if (coding == 1) { printf("坚持,你会有好offern"); } else { printf("放弃,回家卖红薯n"); } return 0; }
有些事情必须日复一日的去做
终身学习
有效代码2w行! 注意是有效代码
while
for
do while
int main() { printf("加入比特n"); int line = 0; while (line <= 20000) { line++; printf("我要继续努力敲代码n"); //printf("%dn", line); } if (line > 20000) printf("恭喜你找到好offern"); else { printf("火候还不够n"); } return 0; }8函数
main函数-主函数
什么是函数呢
f(x)=cx+b
f(x,y) =x+y
c语言中,把一些独立的功能封装成一个函数
int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个 *** 作数:>"); scanf("%d %d", &num1, &num2); sum = num1 + num2; printf("sum = %dn", sum); return 0; } int Add(int x, int y) { int z = x + y; return z; } int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个 *** 作数:>"); scanf("%d %d", &num1, &num2); //scanf 中格式串怎么写的,就必须怎么输入 sum = Add(num1, num2); printf("sum = %dn", sum); return 0; }
把函数想象成一个工厂
原材料-->工厂(加工)-->产品
输入参数-函数运算-返回结果
num1,num2--Add--sum
返回类型,函数名,函数的形式参数,函数体
如果函数定义在main后面,需要在main前声明
一组相同类型元素的集合
int a=1;
int b=2;
int c=3;
...
存1-1000呢?
int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义一个整形数组,最多放10个元素 //存字符 - 字符数组 char ch1[3] = { 'a','b','c' }; char ch2[6] = "hello"; //hello 后面还有一个'' //最好初始化 int arr1[10]; printf("%dn", arr1[0]); //vs2019 数组未初始化 不会报错 //不完全初始化 //int arr[10] ={ 0 }; return 0; }
数组下标从0开始,c标准规定
通过下标定位数组元素
int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; while (i<=9) { printf("%d ", arr[i]); i++; } return 0; }10 *** 作符 算术 *** 作符
-
-
- / %
% *** 作符只能作用于整数
%取模(取余) *** 作符
7%2 商3余1
- / %
-
int main() { //int n = 7.0 % 2; //非法了 //%只能作用于整型 return 0; }
7.0/2
/两端只要有小数,就是执行浮点数除法
int a = 3;
3的二进制位
00000000000000000000000000000011
32 位
>> <<
左移把二进制位向左移动,有×2的效果
位 *** 作符这里的位也是指的二进制位
&
按位与
对应二进制位同时为1才是1,只要有0就是0
^
按位异或
对应二进制位相同为0,不同为1
int main() { int a = 3; int b = 5; int c = a ^ b; //c: 00000000000000000000000000000110 printf("%dn", c); return 0; }
|
按位或
对应二进制位有1则为1,全0才是0
int main() { int a = 3; int b = 5; int c = a & b; //3: //00000000000000000000000000000011 //00000000000000000000000000000101 //00000000000000000000000000000001 //同时为1才是1,只要有0就是0 printf("%dn", c); return 0; }赋值 *** 作符
= += -= *= /= &= ^= |= >>= <<=
+= 复合赋值符
复合赋值符写起来更方便
再懒一点 直接写a++
+是双目 *** 作符 有2个 *** 作数 a+b
单目 *** 作符 只有一个 *** 作数
!
逻辑反 *** 作
int main() { int c = 10; printf("%dn", !c); //0 return 0; }
c语言中0表示假,非0表示真
运算符就是 *** 作符,英文翻译结果不一样而已
+
-
&
取地址符号
sizeof
sizeof是一个 *** 作符,不是函数!!!
用来计算变量大小
int a=10;在内存中创建了一个a变量
sizeof(a) 结果为4
计算的是变量或者类型所创建变量占据内存的大小--单位是字节
int main() { int a = 10; printf("%dn", sizeof(a));//4 printf("%dn", sizeof(int));//4 //计算的是变量或者类型所创建变量占据内存的大小--单位是字节 printf("%dn", sizeof(10));//4 //3+4 的结果是7 类型是int return 0; }
~
按2进制位取反
对存在内存中的补码进行取反
int main() { int a = -1; //-1是负整数 //负整数的二进制有原码,反码,补码 //内存中存储的是二进制的补码 //10000000000000000000000000000001 -原码 //11111111111111111111111111111110 -反码 //11111111111111111111111111111111 -补码 //00000000000000000000000000000000 -取反 int b = ~a; printf("%dn", b); return 0; }
++/--
++a 前置++先++后使用
//int main() //{ // int a = 10; // int b = ++a; // printf("%dn", b); // printf("%dn", a); // // return 0; //} int main() { int a = 10; int b = a++; //后置++ 先使用 后++ printf("%dn", b); printf("%dn", a); return 0; }
对于自定义类型,前置++效率更高
int main() { int a = 10; int b = a--; //先使用后-- printf("%dn", b);//10 printf("%dn", a);//9 return 0; }
*
解引用 *** 作符/间接访问 *** 作符
(类型)
强制类型转换
int main() { int n = 3.14; printf("%dn", n); return 0; }
warning 从double转换到int 可能丢失数据
使用强制类型转换即可
int main() { int n =(int) 3.14; printf("%dn", n); return 0; }逻辑 *** 作符
int main() { int a = 3; int b = 5; if ((a == 3) || (b == 3)) { printf("hehen"); } return 0; }关系 *** 作符
> >= < <= != ==逻辑 *** 作符
&& 逻辑与
|| 逻辑或
exp1 ? exp2 : exp3
//int main() //{ // //exp1 ? exp2 : exp3 // //简化if语句 // int a = 0; // int b = 0; // int max = 0; // scanf("%d %d", &a, &b); // if (a > b) // max = a; // else // max = b; // printf("max is %dn", max); // return 0; //} int main() { //exp1 ? exp2 : exp3 //简化if语句 int a = 0; int b = 0; int max = 0; scanf("%d %d", &a, &b); max = a > b ? a : b; //三目 *** 作符 printf("max is %dn", max); return 0; }逗号表达式
//int main() //{ // int a = 3; // int b = 5; // int c = 10; // //逗号表达式会从左向右依次计算,整个逗号表达式结果是最后一个表达式结果 // // int d = (a + 2, b = a - 3, c = b + 4); // printf("%dn", d);//b为0 0+4=4 // printf("%dn", b);//**b的值发生了改变 0** // // return 0; //}下标引用、函数调用和结构成员
arr[4]
[]下标引用 *** 作符
2个 *** 作数,一个是arr 一个是4 数组名和下标
()函数调用 *** 作符
Add(3,5);
函数在调用时,必须有() *** 作数是函数名Add,3,5
*** 作数不固定,可多可少
.
->
auto-自动-定义自动变量,自动创建空间自动销毁
auto int a=0;
所有的局部变量本身都是auto
char
short
int
long
float
double
break-终止-用于循环中 while for do-while switch
continue-继续-用于循环,退出本次循环
case-swtich
default 默认
do
else
for
if
go to
while
const-常属性-修饰变量,修饰指针
extern-声明外部符号
register-寄存器关键字/建议性命令,不是强制的,需要cpu自己考虑是否使用
越往上,速度越快,空间越小,造价越高
高速缓存几十M
早期时,没有高速缓存什么的
cpu的处理速度和内存的读写速度差不多,后来cpu处理速度越来越快,但内存读写速度跟不上,就出现了高速缓存,寄存器
CPU-中央处理器
寄存器 eax ebx ecx edx esp ebp
注意! 寄存器变量不能取地址
return 返回,在函数中使用
signed-有符号的-修饰类型
unsigned-无符号的
void-无,空-函数返回类型,函数参数,修饰指针
volatile
c语言中可以自定义的类型:
enum-枚举
struct-结构体
union-联合体
sizeof
typedef-类型重定义
typedef unsigned int u_int; int main() { unsigned int num1 = 100; u_int num2 = 100; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)