【问题标题】:Using Exclamation Marks '!' in C使用感叹号“!”在 C 中
【发布时间】:2014-04-04 06:45:57
【问题描述】:

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

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

然后我使用一个包含感叹号和number的while函数

while(!number)
{
    ...
}

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

因此,如果有人能告诉我!number 是什么意思以及它的评价是什么,那就太好了?

提前谢谢你。

【问题讨论】:

  • 不是。 (如果number 为零,则为真,否则为真。)正如任何 C 引用应该告诉你的那样......
  • @DevSolar 但我想'!'只能用于类似:while(number != 8)
  • while(!Number) 相当于说while(Number == 0)
  • @DevSolar 我一直在尝试在线教程,我身边有一本参考书以防万一。我猜想与互联网上的其他所有内容一样,C 编程也存在一些虚假信息
  • @PaulFilch:到目前为止,我在网上看到的绝大多数“编程教程”都是由自己学习这些东西的人编写的,因为有经验的开发人员不会' t 经常坐下来为初学者写东西——除非他们想从中赚钱,例如通过出售一本书(或在 StackOverflow 上种植声誉 ;-) )。对于每种语言,都有“标准”出版物是该主题的推荐阅读材料。对于 C,那将是 Kerninghan & Ritchie 的“The C Programming Language”。

标签: c int punctuation


【解决方案1】:

我们可以将! 视为没有。 因此,如果一个数字不为零(正数或负数),则返回零。 如果为零,则返回 1。

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

【讨论】:

  • 也非常感谢您提供的示例,我运行它时更清楚了。
【解决方案2】:

在 C 中,如果 number == 0,!number 将计算为 1,如果 number != 0,则计算为 0。在 C 中,1 为真,0 为假。

使用像 number == 0 这样的显式比较具有相同的效果,但您可能会发现它更易于阅读。

【讨论】:

  • “更容易阅读”,我不同意。只有当你对 C 几乎一无所知时。
  • 我想“更容易阅读”确实是主观的,所以我会改变我的说法
【解决方案3】:

这是一个否定或“非”运算符。在实践中 !number 的意思是“如果 number == 0,则为 true,否则为 false。”谷歌“一元运算符”以了解更多信息。

【讨论】:

  • 所以每当我使用它时,true是否总是等于0?
  • yes (!number) 在 number 等于 0 时计算为 true,这与上面的规则相同。
【解决方案4】:

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

例如:-

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

有一个 !1 = 0

【讨论】:

    【解决方案5】:

    否定运算符 (!) 只是简单地反转其操作数的含义。

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

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

    所以

    while(!number)
    {
        ...
    }
    

    因为变量编号是 0 ,while(!number) 即 !0 是 'negation of 0' 是 'TRUE' 然后代码进入 while 循环()

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2014-01-03
      相关资源
      最近更新 更多