痕厄 发表于 2025-6-4 18:41:26

循环语句与条件语句的细节与思想

目录

[*]if-else组合

[*]if的执行顺序
[*]操作符的执行顺序测试方法
[*]C语言的布尔类型

[*]switch case组合

[*](补充) 屏蔽警告的方法

[*]在case中执行多条语句,建议case后都带上花括号.
[*]多个case执行同样语句


[*]do、while、for

[*]循环的基本结构
[*]continue跳转的位置
[*]循环设计的思想推荐
[*]推荐使用for的前闭后开写法

[*]null

if-else组合


[*]表达式: 变量与操作符的组合称为表达式
[*]语句: 以分号结尾的表达式称为语句
[*]if(0){ //... }注释法,在看到if(0)时,有可能这是一个注释,不推荐这种做法,但是需要认识.
if的执行顺序


[*]计算功能:先执行完毕if括号()中的表达式or某种函数,得到表达式的真假结果
[*]判定功能:根据表达式结果进行条件判定
[*]分支功能:根据判定结果进行分支
(if有判定和分支两个功能,而switch只有判定而没有分支功能,因此必须使用break)

操作符的执行顺序测试方法

printf("1   ") && printf("2   ");
printf("1   ") || printf("2   ");
C语言的布尔类型


[*]C89/C90没有bool类型
[*]C99 引入了关键字为_Bool的类型,在新增的头文件stdbool.h中.为了保证C/C++的兼容性,被重新用宏写成了bool.
[*]微软对C语言bool类型也有一套标准,BOOL,FALSE,TRUE. 不推荐使用微软这套标准,不具备可移植性
switch case组合


[*]基本语法结构
//switch只能对整数进行判定,做不了复杂的逻辑计算
switch(整型变量/常量/整型表达式){
    case 常量1:
      break;
    case 常量2:
      break;
    case 常量3:
      break;
    default:
      break;
}
推荐使用switch的场景:只能用于整数判定且分支很多的情况下

[*]switch case 的功能
switch本身没有判断和分支能力,switch是拿着结果去找case进行匹配,
case具有判定能力,但没有分支能力,case是通过break完成分支功能
break具有分支功能,相当于if的分支能力.
default相当else,处理异常情况
(补充) 屏蔽警告的方法

error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
方法1:
#pragma warning(disable:4996)
方法2:
#define _CRT_SECURE_NO_WARNINGS //该宏定义必须写在文件的首行(头文件的前面)才有效
(如果宏没有宏值,则只能用在#ifdef等条件编译语句中,即只用于标识)

[*]在case中执行多条语句,建议case后都带上花括号.

在case中定义变量,直接写会警告,需要带上花括号,但不建议在case中定义变量,如果非要这么做,可以封装成函数来替代.并且

[*]多个case执行同样语句
int main()
{
    int n = 0 ;
    scanf("%d",&n);
    switch (n)
    {
      case 1: case 2: case 3: case 4: case 5:
            puts("周内");
            break;
      case 6:
            puts("周六");
            break;
      case 7:
            puts("周日");
            break;
      default:
            break;
    }
    return 0;
}

[*]default可以在switch中的任意位置,一般习惯放在最后的case后
[*]switch中尽量不要单独出现return.一般习惯用break,突然return容易搞混
[*]switch中不要使用bool值,不好维护
[*]case的值必须是数字常量,不能是const int a = 1;这种
[*]按执行频率排列case语句,频率越高越靠前,能减少匹配次数
do、while、for

循环的基本结构


[*]一般的循环都必须要有3种功能:
[*]循环条件初始化
[*]循环条件判定
[*]循环条件更新

(死循环除外)
int main()
{
    int count = 10; //1.循环条件初始化
    while (count > 10) //2.循环条件判定
    {
      printf("%d\n", count); //3.业务逻辑
      count--; //4.循环条件更新
    }
    return 0;
}

[*]for循环
使用样例:for(int i = 0; i

阮蓄 发表于 2025-11-27 01:01:14

谢谢分享,辛苦了

蔓好 发表于 2025-12-18 04:44:13

感谢,下载保存了

闹忧踫 发表于 2026-1-16 00:00:56

喜欢鼓捣这些软件,现在用得少,谢谢分享!

志灿隐 发表于 2026-1-17 22:12:24

过来提前占个楼

厨浴 发表于 2026-1-20 19:25:44

谢谢分享,辛苦了

呶募妙 发表于 2026-1-21 17:38:08

谢谢分享,辛苦了

陆菊 发表于 2026-1-22 13:09:04

谢谢分享,试用一下

昆拗干 发表于 2026-1-25 05:42:12

热心回复!

喳谍 发表于 2026-1-25 08:44:47

感谢分享,学习下。

喳谍 发表于 2026-1-25 10:24:33

谢谢楼主提供!

钦娅芬 发表于 2026-1-27 05:06:25

感谢分享,学习下。

靛尊 发表于 2026-1-28 05:21:33

热心回复!

葛雅隽 发表于 2026-2-1 02:46:06

收藏一下   不知道什么时候能用到

喳谍 发表于 2026-2-5 08:51:52

用心讨论,共获提升!

姜删懔 发表于 2026-2-6 09:36:40

收藏一下   不知道什么时候能用到

啦汇 发表于 2026-2-7 03:52:13

鼓励转贴优秀软件安全工具和文档!

屠焘 发表于 2026-2-7 09:56:16

东西不错很实用谢谢分享

归筠溪 发表于 2026-2-8 13:11:47

前排留名,哈哈哈

时思美 发表于 2026-2-9 21:41:40

这个有用。
页: [1] 2
查看完整版本: 循环语句与条件语句的细节与思想