C语言与我的不解之缘(二)
分支语句
关键词有:if else switch case break default
if 常与 else 配套使用,也可以单独使用
if 语句和 switch 语句支持多层嵌套
if ()
{
}
else
{
}
if else 是一个语句
说到分支语句和循环语句,就不得不提到这其中所用到的逻辑操作符和关系操作符
逻辑操作符有:&&, ||, !
! :逻辑取反运算符
&&:与运算符(全为真,则为真)
注意:表达式是从左至右运算,一旦出现假,该表达式就为假,后面的式子不进行运算
||:或运算符(只要一个为真就全为真)
注意:表达式是从左至右运算,一旦出现真,该表达式就为真,后面的式子不进行运算
要区分 & (按位与)和 | (按位异或),这2个有可能会搞混
short x = 5; // 二进制表示: 0000 0000 0000 0101
short y = 14; // 二进制表示:0000 0000 0000 1110
short c = 0;
// 使用 & (按位与),要先将数字用二进制表示,然后在对应
c = x & y; // c = 0000 0000 0000 0100, c = 4
//只有对应位都为 1 时才为 1
c = x && y; // x = 5 非0为真,y = 14 也为真,表达式为真:c = 1
// 使用 | (按位异或),要先将数字用二进制表示,然后在对应
c = x | y; // c = 0000 0000 0000 1111, c = 15
//只有对应位都为 0 时才为 0
//c = x || y; // x = 5 为真,表达式为真:c = 1;
// ~ (按位取反) 目前也不是特别懂,等我弄明白了在来写
if语句
#include <stdio.h>
int main()
{
int x = 2;
int y = 4;
int z = 5;
if (x>y>z)
{
printf("hi ");
}
else
{
printf("hello ");
}
// x>y>z 的意思是 (x > y) > z, x>y 为假,表示式为0
//0>z 为假,if语句判定为假,语句不执行
//可能与你想要的结果不一样
//原因是:在程序中只能写成 (x > y) && (y > z)
return 0;
}
switch 语句
switch 语句中的 case 只能是常量或者常量表达式,在每个case后面要加上break,除非程序不需要加,要加default
default 的位置可以任意 (在switch语句里面)
#include <stdio.h>
int main()
{
int x = 1;
int y = 3;
switch (x)
{
case 0:printf("hi "); break;
case 1: printf("hello "); break;
case 3-1: printf("word "); break;
case 3: switch (y)
{
// 这里可以自己加一些 case
// switch 支持嵌套
}
default: printf("输入错误\n"); break;
}
return 0;
}
// 可以将 break 去掉试试看会打印什么
// 只有通过实践才能将知//识掌握牢固
循环语句
循环体也支持嵌套使用
while循环
#include <stdio.h>
int main()
{
int x = 10; // 初始化
while (x) // 判断
{
printf("%d ", x):
x--; // 调整
}
// 可以看看 x , x--, --x, 打印有何区别
// x, x++, ++x 类似
// x++ 为后置 ++,是先使用, 再加加
// ++x 为前置 ++,是先加加,在使用
x = 10; // 初始化
while (x--) // 判断 调整
{
printf("%d ", x):
}
x = 10; // 初始化
while (--x) // 判断 调整
{
printf("%d ", x):
}
return 0;
}
for循环
#include <stdio.h>
int main()
{
int x = 10;
// for 循环将初始化 判断 调整 放在了一起方便管理
// 初始化只执行一次
// 先判断 在进入,最后调整
for (x = 0; x < 10; x++)
{
printf("%d ", x):
}
return 0;
}
注意:while 和 for 循环执行次数是 大于等于 0 次
判断次数始终比执行次数多 1 次
下面的 do while 循环 执行次数 至少一次
判断次数与执行次数相同
do while 循环
#include <stdio.h>
int main()
{
int x = 10;
do
{
printf("%d ", x):
x--;
}while(x); //可以试着像 while 循环那样,将x, x--, --x
// 都试一下,看看有什么区别
return 0;
}