是什么意思:" int i,(!! i)"?

时间:2015-06-02 15:36:48

标签: c++

我们有以下C ++代码:

cat file3 #will return
AAAAA
BBBBB

对变量i的操作是什么?

3 个答案:

答案 0 :(得分:6)

我已经看到这样做是为了防止警告 "警告,变量i未使用"

在奇数!!i语句之后,变量现在(技术上)在表达式中使用,因此警告被抑制,但它实际上没有改变任何东西。

示例:

void MyFunc()
{
    int i;
    (!!i);       // Suppress the warning caused by the block below.
#if DEBUG        // In Retail / Non-Debug code, i is not used, and a warning is created!!
    i = GetCountOfSomething();
    printf("The count of something is %d\n", i);
#endif // DEBUG
}

答案 1 :(得分:1)

c++中的未初始化变量具有未定义的行为。他们在堆栈上分配内存但不清理它。知道了,int i;将具有意想不到的价值。您必须在操作之前初始化它。我无法想到使用未初始化变量的任何实际用法。对我来说,这似乎是一个糟糕的编程习惯。

(!!i)无法做任何事情。 i正在初始化。

答案 2 :(得分:0)

一元operator!被应用于i变量两次。 相当于:(!(!(i)))

将否定运算符两次应用于整数会产生01,具体取决于变量的原始值。

  • 如果i0,则!i1,因此!!i!1,即0 }}

  • 如果i 非零,则!i0,因此!!i!0,这是1