2

I'm a C# developer trying to learn C (followed by C++). I am going native, working on Ubuntu using vim as my text editor, and the Gnu C Compiler (gcc) to compile.

I'm trying to write a simple Celcius => Fahrenheit converter and I am getting the following error:

called object '0' is not a function

My code is as follows:

#include <stdio.h>

main()
{
    for(int i = 0; i < 300; i+20)
    {
        int celcius = (5/9)(i-32);
        printf("%d - %d \n", i, celcius);
    }
}

I am compiling with this:

gcc FahrenheitToCelcius.c -std=c99

Could somebody point what I'm doing wrong here?

Thanks

4

4 回答 4

6

正如人们指出的那样

int celcius = (5/9)(i-32);

应该

int celcius = (5/9)*(i-32);

但是,您收到该特定错误消息的原因是

int celcius = (5/9)(i-32);

在运行时被评估为

int celcius = (0)(i-32);

运行时系统将 (0) 视为指针。

所以你需要改变你的数学以避免整数除法

于 2013-09-28T16:04:09.107 回答
5

在 C 中(我假设在其他语言中也是如此:))需要一个算术运算符来执行算术运算。
改变

int celcius = (5/9)(i-32);

int celcius = (5/9)*(i-32);
于 2013-09-28T16:00:53.317 回答
3

这条线是有问题的:

int celcius = (5/9)(i-32);

因为编译器认为您正在尝试调用(5/9). 如果你想做一个乘法,你应该这样做:

int celcius = (5/9)*(i-32);

反而。

此外,如果您希望从该计算中返回浮点值,您应该这样做:

int celcius = (5.0/9.0)*(i-32.0);

因为5/9是整数除法,永远不会返回浮点值。

于 2013-09-28T16:01:39.087 回答
1

改变

int celcius = (5/9)(i-32)

 int celcius = (5/9)*(i-32); 
于 2013-09-28T16:01:03.113 回答