我是一名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
有人能指出我在这里做错了吗?
由于
答案 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);