5.1 逻辑表达式

5.1.1 关系运算符

关系运算符的优先级统统小于算术运算符。

note

  1. 运算:i<j<k中,其表达的意思是(i<j)<k
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i=1,j=2,k=3;
  5. // (i<j)<k
  6. // i<j-> true,也就是 1
  7. // 1<k
  8. if(i<j<k)
  9. {
  10. printf("yes\n");
  11. }
  12. // i>j-> false,也就是 0
  13. // 0<k
  14. if(i>j<k)
  15. {
  16. printf("yes\n");
  17. }
  18. return 0;
  19. }
  20. // 输出,最终的结果是一样的
  21. yes
  22. yes

5.1.3 逻辑运算符

对于逻辑运算符 &&|| ,都具有“短路现象”。即,在运算时先运算左侧的表达式,如下方的--i。如果左表达式的结果可以判定&&||的最终结果,那么将不进行右表达式的运算。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i=1,j=2,k=3;
  5. // 因为由 --i 可得整个运算结果为 0,所以不进行 j++ 的运算
  6. if((--i&&j++)==0)
  7. {
  8. printf("%d",j);
  9. }
  10. return 0;
  11. }
  12. // 输出
  13. 2

5.2 if 语句

5.2.7 布尔值

在 c 语言中,没有直接对布尔值的关键字设置,但我们可以通过一些间接的方式来设置

  1. // 宏定义方式一
  2. #include <stdio.h>
  3. #define TRUE 1
  4. #define FALSE 0
  5. int main()
  6. {
  7. int i=1;
  8. if(i == TRUE)
  9. {
  10. printf("true");
  11. }
  12. if(i == FALSE)
  13. {
  14. printf("false");
  15. }
  16. }
  17. // 输出
  18. true
  19. // 宏定义进行类型定义
  20. #include <stdio.h>
  21. #define BOOL int
  22. int main()
  23. {
  24. BOOL i = 1;
  25. if(i==1)
  26. {
  27. printf("%d",i);
  28. }
  29. if(i==0)
  30. {
  31. printf("%d",i);
  32. }
  33. }
  34. // 输出
  35. 1