如果我没有在函数中指定括号,即使它只是C中的一个语句,为什么会出现错误?

时间:2014-05-21 06:17:08

标签: c function brackets

在for循环中,while循环和if语句允许我不指定括号,如果我只在其中放入语句:

for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
    printf("%3d %6.1f\n", fahr, fahrToCelsius(fahr));

但如果我在这样的函数中这样做:

float fahrToCelsius(int fahr)
    return (5.0/9.0)*(fahr-32);

它给了我一个错误。

为什么我不能在只有一个语句的函数中省略括号?

3 个答案:

答案 0 :(得分:5)

因为支持语言编译器及其实现的C标准规范。

一般来说,破坏规范(如编写非标准代码)是一个坏主意,应该避免这样做,以提高应用程序的可读性,可维护性和可移植性。

优秀的编译器强制执行基于标准的编码。

请参阅此处Open C Standards

答案 1 :(得分:4)

简单地说,它是语言语法所必需的。

C语言语法表示函数定义必须以复合语句结束,复合语句必须以{开头,以}结尾。

for循环,while循环和if语句的语法必须以“statement”语法结尾,该语句不必是复合语句(尽管它可以是)。

请参阅C语言标准中的“语言语法摘要”(C11中的附录A)。

答案 2 :(得分:0)

嗯,你不能因为C标准这样说,正如其他答案所提到的那样,但是如果你真的不喜欢括号,你可以试试预处理器。

#define fahrToCelsius(fahr) ((5.0/9.0)*(fahr-32))