文章目录
前言
这一星期终于上课了,这节课老师讲的是for循环、do...while循环和嵌套循环的基础,我们在之前的章节已经基本写过了,这一期来补一下之前我没看到书的内容——优先级与运算符和Bool类型,以及嵌套循环,还有一点点的数组输入输出。
基础循环部分:
运算符与优先级
运算符
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。我们在C中一般分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符等。
我们在这里和书中同步,介绍关系运算符、逻辑运算符、其他赋值运算符和逗号运算符。
关系运算符
下表显示了 C 语言支持的所有关系运算符。假设变量 A 和 B 的为int类型,且A=10;B=20,则:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 为假。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
这个很简单了,不过要注意的是:相等是==;赋值是=;!=就是≠的意思。
逻辑运算符
下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则:
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
注意:使用时要和其他语句中间有空格,例如:
if(a>=1 && a<=100)
表示判断a是不是>=1且<=100的,语句中间用空格隔开。
其他赋值运算符
下表列出了一些 C 语言支持的其他类型赋值运算符:
运算符 | 描述 | 实例 |
---|---|---|
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
这个也没什么说的,就和++;--;一样方便运算的表达而已。
逗号运算符
逗号运算符在一个表达式的位置使用多个表示式,顺序是从左到右。一般用于多个变量定义,for循环表达式等。
例如:
//变量定义
int a=1,b=2;
又例如:
//for循环表达
int a,b;
for(a=1,b=1;a+b<100;){}
用途:可以让简化行数。确定:检查困难。
优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
_Bool类型
在C99中定义了bool类型,bool类型只包括有1(true)和0(false),即真和假。因为其只有两个值,我们可以定义来做标记变量。默认_bool定义的值为1即true。
定义bool类型:第一种方法:
_Bool s;
这个时候定义的变量s,默认为1(true)。s只能是true或false。
第二种方法:在C99中还定义了:stdbool.h这个头文件,里面更加贴近C++做了bool的定义,因此我们在添加头文件stdbool.h后,可以用如下定义:
#include<stdbool.h>
int main()
{
bool s=true;
return 0;
}
不仅定义了bool类型,还定义了关键字true和false。当然我们输入1和0也是一样的。
嵌套循环
C 语言允许在一个循环内使用另一个循环,也可以在任何类型的循环内嵌套其他任何类型的循环。下面演示几个循环的嵌套。
For循环
for (initialization; condition; increment/decrement)
{
statement(s);
for (initialization; condition; increment/decrement)
{
statement(s);
... ... ...
}
... ... ...
}
其流程大概是:
WHILE循环
while (condition1)
{
statement(s);
while (condition2)
{
statement(s);
... ... ...
}
... ... ...
}
其流程图:
DO...WHILE循环
do
{
statement(s);
do
{
statement(s);
... ... ...
}while (condition2);
... ... ...
}while (condition1);
其流程图:
数组输入输出
新的数组输入输出方式,其实之前也有写过,但是我们还是写一下for循环下的数组输入输出。
输入:
#include<stdio.h>
int main()
{
int a[81]={0};
for(int i=1;i<=80;i++)//输入80个数
scanf("%d",&a[i]);//每次输入一个放到a数组的对应位置
return 0;
}
同理的输出:
#include<stdio.h>
int main()
{
int a[81]={0};
for(int i=1;i<=80;i++)//输入80个数
scanf("%d",&a[i]);//每次输入一个放到a数组的对应位置
for(int i=1;i<=80;i++)
printf("%d ",a[i]);//每次输出一个对应位置的数到终端上
return 0;
}
Comments NOTHING