问题标题:
【一道NCRE2级C语言的题已定义了以下函数:fff(floatx){printf("%dn",x*x);}该函数的类型是:A.与参数x的类型相同;B.void类型;C.int类型;D.无法确定;书上的答案是C,理由是书上定义:“若在函数的】
问题描述:
一道NCRE2级C语言的题
已定义了以下函数:
fff(floatx)
{printf("%dn",x*x);}
该函数的类型是:
A.与参数x的类型相同;
B.void类型;
C.int类型;
D.无法确定;
书上的答案是C,理由是书上定义:“若在函数的首部省略了函数返回值的类型名,则默认函数返回值的类型为int型.”
但是我认为该题应选择D,因为书上还说“若函数没有函数值返回,则必须把函数定义成void类型.”这么看的话,这道题的代码不完整,前后矛盾啊.
但是我认为这段代码是一个完整的函数,其中并没有返回确切的值的表达式出现.所以理应定义函数为void型
郭智疆回答:
书上的说明很清楚了
"若在函数的首部省略了函数返回值的类型名,则默认函数返回值的类型为int型."
这与
"若函数没有函数值返回,则必须把函数定义成void类型."
并不矛盾.
后者要求写代码的时候,如果没有返回值,则要定义为void类型.
但是如果你没有定义类型,则前一条件起作用,默认返回int型.
同时这样的函数中编译的时候应该会提示你,需要返回值.
你可以这么理
如果有void类型限制,则是void型,否则一定是int型,而不管函数有没有return语句.
查看更多