C语言中数值0和1与布尔值0和非零之间的区别与使用

在C语言中,0被视为假,任何非零值被视为真。在布尔上下文中,1与其他非零数值等价,但在数值上下文中它们不同。例如,条件判断`if(a)`仅当a非零时执行,而`if(a==1)`则要求a精确等于1。表达式如`!0`会转换为1,两个真值相加仍为1,展示了数值与布尔值之间的转换规则。
摘要由CSDN通过智能技术生成

在 C 语言中,0 和 1 是两个整数常量,它们的值分别是 0 和 1。0 和非零是两种布尔值,它们表示假和真。在 C 语言中,任何非零的数值都被视为真值,所以 1 和其他非零数值在布尔上下文中是等价的。但是在数值上下文中,它们是不同的。


例如,如果写:

#include<stdio.h>
int    main()
{

int a =0;
scanf("%d",&a);
if (a == 1) 
{

     ;// do something
 
}

return 0;
}

那么只有当 a 的值恰好是 1 时,才会执行 do something。

但是如果写:

#include<stdio.h>
int    main()
{

int a =0;
scanf("%d",&a);
if (a) //改变此处的条件判断
{

     ;// do something
 
}

return 0;
}

那么只要 a 的值不是 0,就会执行 do something。这里的 a 被隐式地转换为布尔值

同样地,如果写:

int b = 1 + 1;

那么 b 的值是 2。但是如果写:

int b = !0 + !0;

那么 b 的值是 1。这里的 !0 表示对 0 取反,得到真值 1。然后两个真值相加,得到数值 1。

所以,在 C 语言中,0 和 1 与 0 和非零不是一样的。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jamo@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值