【问题标题】:super simple program is not working超级简单的程序不工作
【发布时间】:2009-12-30 17:48:02
【问题描述】:

我正在编写“目标 c 2.0 编程”一书,但我不明白为什么这个程序不起作用。基本上我需要构建一个程序来将华氏值转换为摄氏度。

我想在没有对象的情况下非常简单地解决它,只使用直接的程序方法,我遇到的任何问题都是我定义的代表华氏温度或摄氏度值的变量的值即将出现随机的。

这是我的代码:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    float  fahrenheit;
    float  celciusConverted;
    fahrenheit = 27.0;
    celciusConverted = ( fahrenheit - 32 ) / 1.8 ;
    NSLog(@"%f degrees fahrenheit is equal to %f degrees celcius") , fahrenheit, celciusConverted;
    [pool drain];
    return 0;
}

【问题讨论】:

  • 你所说的“随机”是什么意思?你不是每次都得到相同的结果吗?您能否发布一些打印的示例日志行?

标签: objective-c xcode macos


【解决方案1】:

您的 NSLog 语句中的右括号放错了位置。应该就在;之前

你拥有的是

NSLog(@"... %f %f ..."), arg1, arg2;

编译器似乎不够聪明,无法看到%f 没有一个对应的参数,这是NSLog() 等可变参数函数的常见缺陷。在右括号之后,逗号运算符开始,表达式 arg1 和 arg2 什么都不做。

【讨论】:

  • 逗号运算符应该在下一个 C 版本中被丢弃。它的唯一目的是使这样的明显错误在语法上仍然有效。
  • 非常感谢,效果很好,这个地方很棒,肯定会经常使用这个网站,因为我刚刚开始使用 Objective C 进行编码,对编程的了解非常有限,但我的心无论如何都要创建一个 iphone 应用程序(正确输入一个数字),非常感谢您的帮助。尼克
【解决方案2】:

函数的参数放在括号内。

NSLog(@"%f degrees fahrenheit is equal to %f degrees celcius", fahrenheit, celciusConverted);

【讨论】:

  • 谢谢!成功了,感谢帮助,从这里开始。
猜你喜欢
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多