CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
C 语言入门/课时/控制流与运算符
RawBlame
课时目录12 节

C 语言入门

  1. 01C 是什么
  2. 02类型与变量
  3. 03控制流与运算符
  4. 04函数
  5. 05指针与内存
  6. 06数组与字符串
  7. 07结构体与联合体
  8. 08预处理器
  9. 09编译与构建
  10. 10并发与进程
  11. 11调试与测试
  12. 12综合练习

控制流与运算符

if/switch/循环、位运算。

30 分钟

控制流与运算符

if、循环与位运算是 C 日常逻辑的核心。对照 /roadmaps/c,本课覆盖分支、循环及嵌入式常见的位操作。

学习目标

  • 熟练使用 if、switch 与三种循环
  • 掌握算术、逻辑、比较与赋值运算符
  • 理解位运算与掩码用法
  • 避免 C 中常见的逻辑陷阱(如 = 与 ==)

核心概念

控制流示例

#include <stdio.h>
#include <stdint.h>

enum { LED_RED = 1, LED_GREEN = 2, LED_BLUE = 4 };

static int clamp(int v, int lo, int hi) {
    if (v < lo) return lo;
    if (v > hi) return hi;
    return v;
}

int main(void) {
    int score = 85;
    char grade;

    if (score >= 90)      grade = 'A';
    else if (score >= 80) grade = 'B';
    else if (score >= 60) grade = 'C';
    else                  grade = 'F';

    switch (grade) {
    case 'A': puts("优秀"); break;
    case 'B': puts("良好"); break;
    default:  puts("继续加油"); break;
    }

    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        sum += i;
    }

    int n = 5, fact = 1;
    while (n > 1) {
        fact *= n--;
    }

    int arr[] = {3, 1, 4, 1, 5};
    for (int j = 0; j < 5; j++) {
        printf("%d ", arr[j]);
    }
    printf("\n");

    uint8_t flags = LED_RED | LED_BLUE;
    if (flags & LED_GREEN) {
        puts("green on");
    } else {
        flags |= LED_GREEN;
    }

    printf("sum=%d fact=%d clamp=%d flags=0x%02X\n",
           sum, fact, clamp(150, 0, 100), flags);
    return 0;
}

运算符要点

类别运算符说明
算术+ - * / %% 仅用于整数
逻辑&& || !短路求值
位& | ^ ~ << >>掩码、权限标志
自增++ --前缀/后缀语义不同
三元a ? b : c类似 Java

C 中 0 为假,非零为真;switch 的 case 必须是整型常量。

与 C++/Java 对照

特性CC++Java
范围 for无(C99 前)for (auto x : v)
for-each
循环变量声明C99 for (int i=...)支持支持
switch 字符串不支持不支持(C++17 前)支持
位运算常用常用较少(有 >>>)
布尔类型C99 前用 intboolboolean

C 无异常机制;错误通常通过返回码或全局 errno 传递,与 Java 的 try/catch 不同。

练习

  • 写函数判断闰年(能被 4 整除且不能被 100 整除,或能被 400 整除)
  • 用位运算实现 toggle_flag(flags, LED_RED) 翻转某一位
  • 用 do-while 读取用户输入直到为正数(可用 scanf)
  • 说明 if (x = 5) 为何是常见 bug

小结

控制流与 Java 相似;位运算是 C 区别于 Java 的实用技能。 下一课学习函数。

加载本节练习…
← 上一课类型与变量下一课 →函数