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

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

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

例如,如果写:

#include

int main()

{

int a =0;

scanf("%d",&a);

if (a == 1)

{

;// do something

}

return 0;

}

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

但是如果写:

#include

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 和非零不是一样的。

更多创意

奥运男足1/4决赛|埃及VS巴拉圭:此战绝非“菜鸡互啄”
《英雄联盟》征服者系列皮肤大全
bet3365备用

《英雄联盟》征服者系列皮肤大全

📅 07-03 🔥 4121
打女孩子要打哪里最害羞最害怕?惩罚女生哪里合适?