四、变量
4.1 变量的创建
语法形式:
data_type name;
int age; //整型变量 char ch; //字符变量 double weight; //浮点型变量 //初始化 int age = 18; char ch = 'w'; double weight = 48.0; unsigned int height = 100;
4.2 变量的分类
• 全局变量:在⼤括号外部定义的变量就是全局变量,全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的。
• 局部变量:在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。
#include <stdio.h> int global = 2023;//全局变量 int main() { int local = 2018;//局部变量 printf("%d\n", local); printf("%d\n", global); return 0; }
如果局部和全局变量,名字相同,那么计算机该如何选择呢??
#include <stdio.h> int n = 1000; int main() { int n = 10; printf("%d\n" n);//打印的结果10 return 0; }
当局部变量和全局变量同名的时候,局部变量优先使⽤。可以理解为就近原则吧
这里咱们加一个小插曲,在操作系统里面会有详细讲解
全局变量和局部变量在内存中存储在哪⾥呢?
- 局部变量是放在内存的栈区
- 全局变量是放在内存的静态区
- 堆区是⽤来动态内存管理的
五、算数操作符:+、-、*、/、%
+ - * \ % ,都是双⽬操作符。
注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。
5.1 + - * /
#include <stdio.h> int main() { //加法and减法 int x = 4 + 22; int y = 61 - 23; //乘法 int num = 5; //除法:除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。 float a = 6 / 4; int b = 6 / 4; printf("%d\n", x); printf("%d\n", y); printf("%d\n", num * num); // 输出 25 printf("%f\n", a); // 输出 1.000000 printf("%d\n", b); // 输出 1 return 0; }
对除法稍微再讲解一下:
如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时 C 语⾔就会进⾏浮点数除法。
#include <stdio.h> int main() { float x = 6.0 / 4; // 或者写成 6 / 4.0 printf("%f\n", x); // 输出 1.500000 return 0; } // 6.0 / 4 表⽰进⾏浮点数除法,得到的结果就是 1.5
再举个例子:
#include <stdio.h> int main() { int score = 5; score = (score / 20) * 100; return 0; }
你可能觉得经过运算, score 会等于 25 ,但是实际上 score 等于 0 。这是因为score / 20 是整除,会得到⼀个整数值 0 ,所以乘以 100 后得到的也是 0
为了达到预想结果,我们可以改成这样:
#include <stdio.h> int main() { int score = 5; score = (score / 20.0) * 100; return 0; }
5.2 %
运算符 % 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。
#include <stdio.h> int main() { printf("%d\n", 11 % -5); // 1 printf("%d\n",-11 % -5); // -1 printf("%d\n",-11 % 5); // -1 return 0; } //负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定
六、赋值操作符:=和复合赋值
int a = 100;//初始化 a = 200;//赋值,这⾥使⽤的就是赋值操作符
6.1 连续赋值
int a = 3; int b = 5; int c = 0; c = b = a+3;//连续赋值,从右向左依次赋值的。
6.2 复合赋值
#include<stdio.h> int main() { int a = 3; a = a + 10; a += 10;//复合赋值 a = a - 4; a -= 4;//复合赋值 printf("%d\n", a); return 0; }
七、++、- -
++是⼀种⾃增的操作符,⼜分为前置++和后置++,–是⼀种⾃减的操作符,也分为前置- -和后置- -.
前置++
//计算口诀:先++,后使用 #incldue<stdio.h> int main() { int a = 5; int b = ++a; //a=a+1;b=a; printf("a=%d\n", a);//6 printf("b=%d\n", b);//6 return 0; }
后置++
```c //计算口诀:先使用,再++ #include<stdio.h> int main() { int a = 5; int b = a++; //b=a;a=a+1; printf("a=%d\n", a);//6 printf("b=%d\n", b);//5 return 0; }
前置- -
//计算口诀:先--,后使用 #include<stdio.h> int main() { int a = 5; int b = --a; //a=a-1;b=a; printf("a=%d\n", a);//4 printf("b=%d\n", b);//4 return 0; }
后置–
//计算口诀:先使用,再-- #include<stdio.h> int main() { int a = 5; int b = a--; //b=a, a=a-1 printf("a=%d\n", a);//4 printf("b=%d\n", b);//5 return 0; }
八、强制类型转化
int a = 3.14;//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
为了消除这个警告,我们可以使⽤强制类型转换:
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
强扭的瓜不甜,不是迫不得已的情况下,最好不要强制类型转化,understand??
总结
本篇内容主要涉及了C语言的基础语法,不需要死记硬背,只需要经常敲代码,熟能生巧