【问题标题】:I am getting Expected identifier in Xcode我在 Xcode 中得到了预期的标识符
【发布时间】:2012-09-17 04:06:43
【问题描述】:

我正在使用 obj-c 为 iPhone 制作一个应用程序,用于查找三角形的边长和角度。该应用程序的一部分使用了勾股定理。

NSNumber *pySidea = [NSNumber numberWithInteger:[[sideA text] integerValue]];
NSNumber *pySideb = [NSNumber numberWithInteger:[[sideB text] integerValue]];
NSNumber *pySidec = [NSNumber numberWithInteger:[[sideC text] integerValue]];

int pyAside = [pySidea intValue];
int pyBside = [pySideb intValue];
int pyCside = [pySidec intValue];

if ([aSide length] = 0) {
    NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))];
    sideCstring = @"_anserSidec";
}

sideA、sideB 和 sideC 是使用文本字段的三角形的边。除了

之外,我没有收到任何部分的错误
if ([aSide length] = 0) {
    NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))];
    sideCstring = @"_anserSidec";
}

我在哪里得到“预期的标识符”。感谢您的帮助。

【问题讨论】:

    标签: iphone objective-c c xcode identifier


    【解决方案1】:

    这一行:

    NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))];
    

    似乎想要创建一个字符串,但除了方括号内的一些算术之外什么都不做,这是无效的语法。我想你想要这样的东西:

    float answer = sqrtf(powf(pyAside, 2) + powf(pyBside, 2));
    NSString *finalAnswer = [[NSNumber numberWithFloat:answer] stringValue];
    

    调用powf() 来计算一个数字也有点笨拙。你可以写:

    float answer = sqrtf(pyAside*pyAside + pyBside*pyBside);
    

    正如 Nithin 在他的回答中指出的那样,您的 if 语句也存在逻辑错误 - 您可能希望使用 ==

    【讨论】:

    • 仅供参考,还有标准函数hypot(3) 来进行斜边计算,这也避免了中间结果中的溢出和下溢(尽管这通常不是问题)。
    【解决方案2】:

    检查你的'if'条件,它应该是if([aSide length] == 0)

    记住两个等号 (=)...

    【讨论】:

    • 同样的问题。错误显示在NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))];
    • 比较错误是对的,但这不是OP的具体问题。他的下一行出现语法错误。 = 在语法上是正确的,尽管它在逻辑上是错误的。
    • 编译器也应该标记这个...需要打开警告旋钮!
    • 据我所知,一个属性的长度是只读的,你不能给它赋值。
    • 我把它设置为比较长度,但现在我无法将字符串分配给标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2022-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多