使用感叹号'!'在C.

时间:2014-04-04 06:45:57

标签: c int punctuation

我在阅读参考书中的代码时遇到了涉及感叹号和整数的问题。

我们假设我已经声明了一个名为number的整数变量 - int number = 0;

然后我使用涉及感叹号和number

的while函数
while(!number)
{
    ...
}

我对此感到困惑,因为我不知道!number的含义是什么以及可能返回的结果是什么?我不确定这是否可以使用,但正如我所说,我在书中看到了它。

因此,如果有人能告诉我 !number的意思是什么以及评估的内容会很棒?

提前谢谢。

5 个答案:

答案 0 :(得分:8)

我们可以将!视为不。 因此,如果number为非零(+ ve或-Ve),则返回Zero。 如果为零,则返回1.

int i = 13;
printf("i = %d, !i = %d\n", i, !i);
printf("!0 = %d\n", !(0));

答案 1 :(得分:5)

在C中,如果数字== 0,则数字将评估为1;如果数字,则评估为0!= 0.在C中,1为真,0为假。

使用数字== 0等显式比较具有相同的效果,但您可能会发现它更容易阅读。

答案 2 :(得分:4)

这是一种否定或"不是"运营商。在实践中!数字表示"如果数字== 0则为true,否则为false。"谷歌"一元运营商"了解更多。

答案 3 :(得分:1)

它用于数字的否定。它是一元运算符。

例如: -

如果我们使用零: - !0那么它将变为1

一个!1 = 0

答案 4 :(得分:0)

否定运算符)只是颠倒了其操作数的含义。

操作数或表达式必须是算术或指针类型。但是表达式的操作数/结果被隐式转换为数据类型bool(布尔值0表示false,非零表示True)。

如果转换后的操作数为false,则结果为true;如果转换的操作数为true,则结果为false。结果是bool类型。

所以

while(!number)
{
    ...
}

因为变量数是0,而(!数字)即,0是0的“0”否定。这是' TRUE'然后代码进入while循环()