返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 7, 主题|小节 3
进行中

7.2 关系运算的进阶魔法

2025年9月22日
课 进展
0% 完成

[图片:展示变量之间比较的可视化图例,用不同高度的柱状图表示数值大小]

“现在让我们来看看一些更有趣的情况!”我继续说道。

7.2.1 变量之间的比较

[图片:用天平展示变量比较的各种情况]

int a = 15, b = 10, c = 15;

// 基本比较
printf("%dn", a > b);     // 输出:1(15大于10)
printf("%dn", a >= c);    // 输出:1(15等于15)
printf("%dn", b < c);     // 输出:1(10小于15)

// 复杂情况
printf("%dn", a != b);    // 输出:1(15不等于10)
printf("%dn", a != c);    // 输出:0(15等于15)

// 变量与表达式比较
printf("%dn", a > b + 5);  // 输出:0(15不大于15)
printf("%dn", a >= b + 5); // 输出:1(15等于15)

7.2.2 关系运算的常见陷阱

[图片:展示常见错误的警示标志,并配有正确的写法示例]

小华举手问道:”小C老师,我可以这样写吗:a > b > c?”

“啊,这是个非常好的问题!让我们来看看几个常见的陷阱!”

int a = 15, b = 10, c = 5;

// 陷阱1:连续比较
printf("%dn", a > b > c);    // 危险!不是我们想要的结果
// 实际执行过程:
// 1. 先计算 a > b,得到1
// 2. 再计算 1 > c,得到0
// 这不是在判断 a > b 且 b > c!

// 正确的写法:使用两个独立的比较
printf("%dn", a > b && b > c);  // 这才是我们想要的!

// 陷阱2:浮点数比较
float x = 0.1 + 0.2;
float y = 0.3;
printf("%dn", x == y);    // 可能得到0,因为浮点数运算有误差

// 陷阱3:赋值和判断混淆
int n;
if(n = 5) {    // 这是赋值,不是判断!
    printf("小心!这里是赋值!n");
}

练习题:

  1. 选择题:对于变量a=20, b=15, c=10,表达式 a > b > c 的结果是什么?
    A. 1
    B. 0
    C. 20
    D. 15

正确答案:B
解析:表达式会先计算 a > b 得到1,然后计算 1 > c 得到0,这不是在判断a>b且b>c。

  1. 判断题:在C++中,连续的关系运算(如 a > b > c)可以用来判断三个数的大小关系。

正确答案:×
解析:连续的关系运算会导致错误的结果,应该使用独立的比较并用逻辑运算符连接。