第四周:进一步的循环与判断

本文介绍了C语言中的逻辑类型,包括C99后引入的`bool`类型以及`true`和`false`的使用。讲解了逻辑运算符如`!`、`&&`和`||`的用法,并通过示例解释了如何在C语言中表达区间和判断字符是否为大写字母。此外,还详细阐述了条件运算符`条件?结果1:结果2`的使用以及`switch-case`多路分支结构,强调了其在不同场景下的应用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、逻辑类型与运算

(一)逻辑类型——bool

  • 原本为c++中才有,c++的bool中true表示1,false表示0
  • C语言中C99之后才有
  • C99后的版本有了“#include<stdbool.h>”
  • 之后就可以使用bool、true和false
  • 例:
#include <stdio.h>
#include <stdbool.h>

int main()
{
    bool b=6>5;
    bool t=true;
    t=2;         //并没有真正bool量的类型,实际仍为整数
    printf("d%\n",b);   //最终输出时仍为整数1而不是true
    return 0;
}

(二)逻辑运算

  • 逻辑运算是对逻辑量进行的运算,结果只有0(代表false)或者1(代表true)
  • 逻辑量是关系运算或逻辑运算的结果
运算符描述示例结果
!(单目运算符)逻辑非!a
  • 如果a是1结果就是0
  • 如果a是0结果就是1
  • (非true=false)
&&逻辑与a&&b
  • 如果a和b是1结果就是1
  • 否则就是为0
||逻辑或a||b
  • 如果a和b其中一个是1结果就是1
  • 如果a和b都是0结果就是0

例:用C语言表达数学中的区间,如:x∈(4,6)或x∈[4,6]

  • 错误示例:4<x<6,这个式子会先计算4<x,结果为0或1(即true或false)再比较0或1与6的大小,结果依然为逻辑值(0或1)
  • 正确示例:开区间:4<x&&x<6
  • 正确示例:闭区间:4<=x&&x<=6

例:判断一个字符c是否为大写字母

  • c>='A'&&c<='Z'

优先级:!>&&>||

  • &&和||优先级低于关系运算,高于赋值运算

注:逻辑运算是自左向右进行,如果左边已经能出结果则不会做右边的运算

  • 对于&&,左边是false就不做右边
  • 对于||,左边是true就不做右边
  • 所以最好不要把赋值包括复合赋值组合进表达式

(三)条件运算和逗号运算

1.条件运算

例:count=(count>20)?count-10:count+10

分别对应   条件?条件满足值:条件不满足值

等于if(count>20)

            count=count-10;

else

            count=count+10;

  • 优先级高于赋值运算但是低于其他运算符低,但是会增加表达式难度

2.逗号运算(主要在for中使用)

for中想要多个计算,如:for(i=0,j=10;i<j;i++,j--)


二、多路分支

(一)switch-case

#include <stdio.h>
int main(void)
{
    int type;
    scanf("%d",&type)
    switch(type){
    case 1:
       printf("您好");
       break;
    case 2:
       printf("早上好");
       break;
    case 3:
       printf("晚上好");
       break;
    case 4:
       printf("再见");
       break; 
    default:
       printf("啊?");
       break;
    }
    return 0;
}

即输入type值后直接跳进对应数值,不会从1,2,3顺次向下判断(但是级联if-else会)

switch(控制表达式){

case 常量:

     语句

     ——

case 常量:

     语句

     ——

default:

     语句

     ——

}

  • 控制表达式只能是整数型结果
  • 常量可以是常数也可以是常数计算表达式(C99 only)
  • case为分支标号
  • 如未遇到break则会执行到下一个case中,直到遇到break或switch结束
  • 分段函数不适合用switch-case(不是最佳)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值