环球通讯!明晰C语言中的真/假和0/1

2022-12-29 16:13:50 来源:51CTO博客

前言

C语言中的真/假0/1在不同的情境下具有不同的意义,清楚地对他们进行区别有助于正确理解程序,并巧妙地解决一些问题。

在逻辑表达式中

在逻辑表达式中,0表示假,非0表示真


(资料图)

int main(){    if (-1)    {    //执行        printf("hehe\n");    }    if (0)    {        //不执行        printf("haha\n");    }    return 0;}

在布尔类型中

在布尔类型中,true定义为 1,false 定义为0

C11:

The remaining three macros are suitable for use in #if preprocessing directives. Theyare

true

which expands to the integer constant 1,

false

which expands to the integer constant 0, and

_ _bool_true_false_are_defined

which expands to the integer constant 1.

V.S.编译器stdbool.htruefalse​的定义:

#ifndef _STDBOOL#define _STDBOOL#define __bool_true_false_are_defined 1#ifndef __cplusplus#define bool  _Bool#define false 0#define true  1#endif /* __cplusplus */#endif /* _STDBOOL */

在关系表达式中

关系表达式的返回值为 0 或 1,且具有int类型

C99:

​​6​​Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.92)​​The result has type int.

标准中也给出了像​​a​这样的表达式的处理方法:

The expression a

一个应用实例

问题:判断字符串是否合法,该字符串至少出现大写字母、小写字母和数字中的两种类型

可以将三种类型的元素出现个数分别计数,利用下面的表达式判断:

if((upper_count > 0) + (low_count > 0) + (digit_count > 0) >= 2){  //符合条件}

标签: 关系表达式 逻辑表达式 布尔类型

上一篇:世界看点:React.js 和 Spring Data REST(二)
下一篇:Zabbix 6 系列学习 10:原生高可用介绍及使用