为什么我得到'被叫对象0不是函数错误'?

时间:2013-09-28 15:59:26

标签: c

我是一名C#开发人员,正在尝试学习C(其次是C ++)。我是原生的,使用vim作为我的文本编辑器,使用Gnu C编译器(gcc)来编译Ubuntu。

我正在尝试写一个简单的Celcius =>华氏温度转换器,我收到以下错误:

  

调用对象'0'不是函数

我的代码如下:

#include <stdio.h>

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

我正在编译:

gcc FahrenheitToCelcius.c -std=c99

有人能指出我在这里做错了吗?

由于

4 个答案:

答案 0 :(得分: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)视为指针。

因此,您需要更改数学以避免整数除法

答案 1 :(得分:5)

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

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

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

答案 2 :(得分: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是整数除法,并且永远不会返回浮点值。

答案 3 :(得分:1)

更改

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

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