【问题标题】:if statement in obj-c expected expression errorobj-c 中的 if 语句预期表达式错误
【发布时间】:2016-12-27 01:43:50
【问题描述】:

一个使用 obj-c 编码的新手提出的一个简单问题... 看这段代码:

**int main(int argc, const char * argv[]) {
@autoreleasepool {
    // insert code here...
    //NSLog(@"Hello, World!");

    int a,b;

    a = 5;
    b = 6;
    if (a ==b) NSLog(@ "a is equal to b");
    if (a !=b)  NSLog(@ " a is not equal to b" );
    if (a > b)  NSLog(@ " a is greater that b");
    if ( a < b)  NSLog(@ " a is less than b");
    if ( a >= b)  NSLog(@ " a is greater of equal to b");
    if (a <= b) NSLog(@ " a is less or equal to b");
    if (!(a == b)) NSLog(@ " a is not (Equal to b)");
    if ((a == b)  || ( a =-- b )) NSLog(@ " a is equal to be, or a is equal to -- b");
    if ((a <= b) && (a < ++b)) NSLog(@ " a is less than or equal to b, and a is less than ++b");
    if (a == b) NSLog(@" a is equal to b");

    if ( a == b); {

        NSLog(@" a is equal to b");
    }

    else  NSLog (@ " a is not equal to b");

    BOOL z = ( a == b);
    if (!z) NSLog(@ " a is not (equal to b)");
    BOOL y = ( a > b);
    if ( y != YES) NSLog(@ " a is NOT ( greater than b");
    return 0;
    }
}**

else 语句出现错误,表示预期的表达式。 我在这里做错了什么?我错过了什么? 使用 xcode 版本 8.2.1

【问题讨论】:

  • 复制你的代码,它已经在 Xcode 上发出警告。首先在您的 nslog 中,您在 @" 之间有一个不应该有的空格。其次,您在放置指示 if-else-block 之前已经终止了 if 条件。
  • 分号放错了。

标签: objective-c xcode8


【解决方案1】:

问题代码在这里:

if ( a == b); {

    NSLog(@" a is equal to b");
}

else  NSLog (@ " a is not equal to b");

第一行等价于

if ( a == b) {} {

因为分号 (;) 是一个空语句。这会将if () 变成单语句条件。后面的左大括号不再是 if () 语句的一部分,而是开始一个新的独立块。

这使得后面的else { ... } 不是if () 语句的一部分,因此是无效的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多