• C控制语句:循环(1)


    本篇摘要:

    c语言中用关系运算符和表达式比较大小

    新的_Bool类型

    优先级和关系运算符

    ---------------------------------------------------------------------------------------------------------------------------------

    在C语言中,可以使用关系运算符(也称为比较运算符)来比较两个值的大小。这些运算符会返回一个布尔值,表示比较结果是真(1)还是假(0)。常用的关系运算符有:

    1. ==:等于
    2. !=:不等于
    3. >:大于
    4. <:小于
    5. >=:大于等于
    6. <=:小于等于

     

    1. #include
    2. int main() {
    3. int a = 5;
    4. int b = 10;
    5. // 使用关系运算符比较 a 和 b
    6. if (a > b) {
    7. printf("a 大于 b\n");
    8. } else {
    9. printf("a 不大于 b\n");
    10. }
    11. if (a < b) {
    12. printf("a 小于 b\n");
    13. } else {
    14. printf("a 不小于 b\n");
    15. }
    16. if (a == b) {
    17. printf("a 等于 b\n");
    18. } else {
    19. printf("a 不等于 b\n");
    20. }
    21. if (a != b) {
    22. printf("a 不等于 b\n");
    23. } else {
    24. printf("a 等于 b\n");
    25. }
    26. if (a >= b) {
    27. printf("a 大于或等于 b\n");
    28. } else {
    29. printf("a 不大于或等于 b\n");
    30. }
    31. if (a <= b) {
    32. printf("a 小于或等于 b\n");
    33. } else {
    34. printf("a 不小于或等于 b\n");
    35. }
    36. return 0;
    37. }

    在上面的代码中,程序会对 ab 进行比较,并根据比较结果输出相应的信息。运行结果如下:

     a 不大于 b
    a 小于 b
    a 不等于 b
    a 不等于 b
    a 不大于或等于 b
    a 小于或等于 b

    ----------------------------------------------------- 

    在C语言中,_Bool是C99标准引入的一种新类型,用于表示布尔值(布尔类型)。在C99标准之前,C语言没有专门的布尔类型,通常使用整数类型(如int)来表示布尔值,其中0表示假(false),非0值表示真(true)。

    使用_Bool类型可以提高代码的可读性和可维护性,明确表示变量是布尔类型。标准库提供了布尔类型的宏定义,可以使代码更具可读性。引入头文件后,可以使用bool关键字替代_Bool,使用truefalse代替0和1。

    以下是一些使用_Bool类型和头文件的示例:

    使用_Bool

    1. #include
    2. int main() {
    3. _Bool a = 1; // 表示真
    4. _Bool b = 0; // 表示假
    5. if (a) {
    6. printf("a is true\n");
    7. } else {
    8. printf("a is false\n");
    9. }
    10. if (b) {
    11. printf("b is true\n");
    12. } else {
    13. printf("b is false\n");
    14. }
    15. return 0;
    16. }

    使用

    1. #include
    2. #include
    3. int main() {
    4. bool a = true; // 表示真
    5. bool b = false; // 表示假
    6. if (a) {
    7. printf("a is true\n");
    8. } else {
    9. printf("a is false\n");
    10. }
    11. if (b) {
    12. printf("b is true\n");
    13. } else {
    14. printf("b is false\n");
    15. }
    16. return 0;
    17. }

    使用_Bool进行关系运算符比较

    1. #include
    2. #include
    3. int main() {
    4. int x = 5;
    5. int y = 10;
    6. // 使用关系运算符比较 x 和 y,并将结果存储在布尔变量中
    7. bool isGreater = x > y;
    8. bool isLess = x < y;
    9. bool isEqual = x == y;
    10. printf("x > y: %s\n", isGreater ? "true" : "false");
    11. printf("x < y: %s\n", isLess ? "true" : "false");
    12. printf("x == y: %s\n", isEqual ? "true" : "false");
    13. return 0;
    14. }

    在这个示例中,关系运算符的比较结果存储在布尔变量中,并且使用条件运算符?来打印比较结果。

    使用_Bool类型和布尔宏定义可以使代码更简洁、易读,同时明确表达变量的布尔含义。

    -------------------------------------------

    优先级和关系运算符

    在C语言中,运算符有明确的优先级和结合性(associativity),这决定了在一个表达式中多个运算符如何组合和计算。关系运算符和其他运算符的优先级影响表达式的求值顺序。

    关系运算符的优先级

    关系运算符的优先级较低,但高于赋值运算符。具体的优先级顺序(从高到低)如下:

    1. 算术运算符 (+, -, *, /, %)
    2. 关系运算符 (<, <=, >, >=)
    3. 相等运算符 (==, !=)
    4. 逻辑运算符 (&&, ||)
    5. 赋值运算符 (=, +=, -=, 等)

    结合性

    • 大多数关系运算符的结合性是从左到右(左结合性)。
    • 赋值运算符的结合性是从右到左(右结合性)。

    示例和优先级说明

    考虑以下示例:

    1. #include
    2. int main() {
    3. int a = 5;
    4. int b = 10;
    5. int c = 15;
    6. int result;
    7. result = a + b > c - 5; // 1
    8. printf("result = %d\n", result);
    9. result = (a + b) > (c - 5); // 2
    10. printf("result = %d\n", result);
    11. result = a < b && b < c; // 3
    12. printf("result = %d\n", result);
    13. result = a < b || b > c; // 4
    14. printf("result = %d\n", result);
    15. return 0;
    16. }
    分析
    1. result = a + b > c - 5;

      • 运算顺序:先计算 a + bc - 5,然后比较它们。
      • 等价于:result = (a + b) > (c - 5);
      • 结果:result1(真)。
    2. result = (a + b) > (c - 5);

      • 运算顺序:括号内的表达式先计算,然后进行比较。
      • 结果与上一个示例相同。
    3. result = a < b && b < c;

      • 运算顺序:先计算 a < b,然后计算 b < c,最后计算逻辑与 &&
      • 等价于:result = (a < b) && (b < c);
      • 结果:result1(真)。
    4. result = a < b || b > c;

      • 运算顺序:先计算 a < b,然后计算 b > c,最后计算逻辑或 ||
      • 等价于:result = (a < b) || (b > c);
      • 结果:result1(真),因为 a < b 为真。

    通过这些示例可以看到,运算符的优先级和结合性会影响表达式的求值顺序。使用括号可以明确指定求值顺序,从而避免混淆。

    运算符优先级表

    以下是常见运算符的优先级表(从高到低):

    1. 括号 ()
    2. 一元运算符 + - ! ~ ++ -- (右结合)
    3. 乘法、除法、取模 * / %
    4. 加法、减法 + -
    5. 关系运算符 < <= > >=
    6. 相等运算符 == !=
    7. 逻辑与 &&
    8. 逻辑或 ||
    9. 条件运算符 ?: (右结合)
    10. 赋值运算符 = += -= *= /= %= <<= >>= &= ^= |= (右结合)

    理解这些优先级和结合性对于编写和阅读C语言代码非常重要,尤其是在复杂表达式中。

  • 相关阅读:
    Unity websocket
    【图像版权】论文阅读:CRMW 图像隐写术+压缩算法
    java父类子类调用时序
    [附源码]计算机毕业设计JAVA疫情背景下社区公共卫生服务系统
    【算法练习Day3】 移除链表元素&&设计链表&&反转链表
    信息系统项目管理师 第四版 口诀
    HTML5基础
    Leetcode92. 反转链表 II
    SRE,了解一下?35+岁程序员新选择
    0x00 Spring Boot 3入门学习教程大纲
  • 原文地址:https://blog.csdn.net/lly_b/article/details/140971878