IF函数开G啦!

相信各位同学都早已经厌倦了IF函数多条件判断时的层层嵌套,稍微不注意,少个括号,少个判断条件,出错不说,检查起来也是相当烧脑,当看到MySQL中的case when 条件判断语句时,感觉像是遇到了北京40度高温夏天里的一阵凉风,多条件判断竟然可以这么写?

其实,遇到if层层嵌套的多条件写法,大家可以试一下ifs多条件判断表达式啦,下面就为使用office2019及以上版本的同学介绍以下ifs函数,使用office2019以前版本的同学请准备好纸巾擦口水吧,当然最新版本的WPS表格中,也可以免费使用哦。

先讲下IFS函数语法。IFS([条件1, 值1, [条件2, 值2,],…[条件127, 值127,])。最多可以输入127个条件。所有条件中如果没有“TRUE”值,则返回#N/A错误值。

b9b9a1555057fc80f96a5785c9d1b0bd.png

在此我们仍以经典判断学生成绩“优”“良”“中”“差”为例,讲解IFS的优点和用法。

如果使用曾经的IF函数,我们需要好好的的理下思路,需要三层嵌套,才能完成,F2单元格中输入如下:

“=IF(E2<60,"差",IF(E2<80,"可",IF(E2<95,"良","优")))”。向下复制填充公式,得到结果。

00f66918c5a51fd3dec7070c994268d7.png

如果用IFS,则思维逻辑上以及公式的书写上会简单很多。在G2单元格中输入“=IFS(E2<60,"差",E2<80,"可",E2<95,"良",E2<=100,"优")”,向下复制填充单元格。得到结果。

8db16ca10ce5757d6f4ff0d60a672280.png

这里条件要注意书写顺序,顺序颠倒会出现错误结果。比如上公式中如果写成“=IFS(E2<80,"可",E2<60,"差",E2<95,"良",TRUE,"优")”。则当F9值为50时结果却为“可”。

c2164775a23024ed4cf5e9a75823c270.png

所有条件中如果没有“TRUE”值,则返回#N/A错误值。比如上公式中,最后一个条件不是“TRUE”,而是“E2<=100”,当E2值大于100时就会出现#N/A错误值。

0bc6d8ec3a71a7e4909fcfa023ed98b6.png

各位有兴趣的小伙伴赶快打开WPS或Office2019及以上的版本试试吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 pthread_cond_wait 函数可以让一个线程等待另一个线程发送信号,通常用于线程间的同步操作。 以下是使用 pthread_cond_wait 函数挂起一个任务的步骤: 1. 定义一个互斥锁 mutex 和一个条件变量 cond。 ``` pthread_mutex_t mutex; pthread_cond_t cond; ``` 2. 在需要等待的线程中加锁 mutex。 ``` pthread_mutex_lock(&mutex); ``` 3. 在等待前,判断是否满足等待条件,如果不满足,就等待条件变量 cond。 ``` while (!condition) { pthread_cond_wait(&cond, &mutex); } ``` 4. 等待条件变量 cond 时,会自动释放 mutex,等待被唤醒后,重新获得 mutex,继续执行下面的代码。 5. 在唤醒等待线程的线程中,需要先加锁 mutex,然后设置满足条件变量 cond,并发送信号通知等待线程。 ``` pthread_mutex_lock(&mutex); condition = true; pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); ``` 注意事项: 1. 等待条件变量 cond 时需要先加锁 mutex,否则无法保证线程安全。 2. 等待条件变量 cond 时需要使用 while 循环判断条件,而不是 if 语句,因为可能存在虚假唤醒的情况。 3. 使用条件变量 cond 时需要先初始化,可以使用 pthread_cond_init 函数进行初始化。使用完毕后,需要使用 pthread_cond_destroy 函数进行销毁。 示例代码: ``` pthread_mutex_t mutex; pthread_cond_t cond; bool condition = false; void* thread_func1(void* arg) { pthread_mutex_lock(&mutex); while (!condition) { pthread_cond_wait(&cond, &mutex); } // do something pthread_mutex_unlock(&mutex); pthread_exit(NULL); } void* thread_func2(void* arg) { pthread_mutex_lock(&mutex); condition = true; pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); pthread_exit(NULL); } int main() { pthread_mutex_init(&mutex, NULL); pthread_cond_init(&cond, NULL); pthread_t thread1, thread2; pthread_create(&thread1, NULL, thread_func1, NULL); pthread_create(&thread2, NULL, thread_func2, NULL); pthread_join(thread1, NULL); pthread_join(thread2, NULL); pthread_mutex_destroy(&mutex); pthread_cond_destroy(&cond); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值