我是一位经验丰富的程序员,所以这种神秘的行为对我来说完全是个谜.
我有一个简单的if认为语句来应该在整整两个布尔变量只能输入false.但是,if-statement由于某种原因进入时只有其中一个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");
}
Run Code Online (Sandbox Code Playgroud)
并NSLog打印以下内容:
"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"
Run Code Online (Sandbox Code Playgroud)
我真的不明白.由于第一个变量true位于第一位,因此if根据我的编程技巧应该跳过整个语句?
有没有人知道这里发生了什么?
你的结尾有一个分号 if
if (!connected && !notConnectedMessageShown); <<--- this ; is wrong
Run Code Online (Sandbox Code Playgroud)
这样,"真实"条件的块就是空的,并且您的代码总是在它之后立即进入块.
它应该是这样的:
if (!connected && !notConnectedMessageShown) <<-- see here
{
NSLog(@"Entering if statement");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |