我们有以下C ++代码:
cat file3 #will return
AAAAA
BBBBB
对变量i的操作是什么?
答案 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)))
将否定运算符两次应用于整数会产生0
或1
,具体取决于变量的原始值。
如果i
为0
,则!i
为1
,因此!!i
为!1
,即0
}}
如果i
非零,则!i
为0
,因此!!i
为!0
,这是1
。