2

我是一位经验丰富的程序员,所以这种神秘的行为对我来说完全是个谜。

我有一个简单的if-statement,只有在两个布尔变量正好是false. 但是,if当只有其中一个是 时,出于某种原因输入了 - 语句false

我的代码如下所示:

BOOL connected = [self connected];

NSLog(@"Connected to the internet: %@", connected ? @"YES" : @"NO");

BOOL notConnectedMessageShown = ((FOLDAppDelegate *)[[UIApplication sharedApplication] delegate]).notConnectedMessageShown;

NSLog(@"notConnectedMessageShown: %@", notConnectedMessageShown ? @"YES" : @"NO");

if (!connected && !notConnectedMessageShown);
{
    NSLog(@"Entering if statement");
}

NSLog打印以下内容:

"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"

我真的不明白。既然第一个变量在第一位,那么根据我的编程技能应该跳过true整个-语句吗?if

有谁知道这里发生了什么?

4

1 回答 1

7

你的末尾有一个分号if

if (!connected && !notConnectedMessageShown);  <<--- this ; is wrong

这样,“真”条件的块就是空的,你的代码总是在它之后进入块。

应该是这样的:

if (!connected && !notConnectedMessageShown)  <<-- see here
{
   NSLog(@"Entering if statement");
}
于 2012-07-28T11:17:45.563 回答