在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);
它给了我一个错误。
为什么我不能在只有一个语句的函数中省略括号?
答案 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))