明晰C语言中的真/假和0/1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了明晰C语言中的真/假和0/1相关的知识,希望对你有一定的参考价值。

前言

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. They are

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<b<c​​这样的表达式的处理方法:

The expression a<b<c is not interpreted as in ordinary mathematics. As the syntax indicates, it means (a<b)<c; in other words, if a is less than b, compare 1 to c; otherwise, compare 0 to c.​


一个应用实例

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

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

if((upper_count > 0) + (low_count > 0) + (digit_count > 0) >= 2)

//符合条件

以上是关于明晰C语言中的真/假和0/1的主要内容,如果未能解决你的问题,请参考以下文章

Shell 中的真与假

转:人际关系的本质是什么

初学编程,大家帮忙看下这道c语言题怎么做?万分感谢

在C语言中如何固定字符的长度

C语言取出字符串中的字母

C语言 分离字符串中的字母、数字、符号