嘿,我正在做一个练习,我必须用 C 语言编写一个无符号函数,我有一个问题,我是否必须因为函数的类型而返回一些东西?还是可选的??
最佳答案
在正常使用中,任何声明返回值的函数都应该返回一个值。这很大程度上是一个良好的编程实践的问题。未能返回值通常是错误的迹象。然而,C 标准并不要求这样做,并且有两个异常(exception)。
C 2018 6.9.1 12 允许函数通过到达其代码末尾而不返回值来终止,前提是调用者不使用该函数的值:
Unless otherwise specified, if the
}
that terminates a function is reached, and the value of the function call is used by the caller, the behavior is undefined.
函数在某些情况下可能返回值而在其他情况下不返回的一种情况是,它被设计为根据命令执行各种不同的操作。例如:
unsigned DoSomething(int command, int parameters[])
{
switch (command)
{
case GetSomething:
…
return Something;
case RememberSomething;
Something = parameters[0];
…
break;
}
}
这样的设计可能容易出错,应该仔细考虑。由于函数被声明为返回一个值,程序员可能会期望它这样做,并在没有返回值的情况下无意中将函数的值分配给另一个对象,从而导致未定义的行为。
此外,函数可能根本不返回,并且有一个函数说明符用于显式告诉编译器情况如此,_Noreturn
,如 6.7.4 中所指定。此行为通常仅在异常情况下使用。例如,标准函数 abort
和 exit
终止程序,因此它们不会返回。当然,它们是用 void
声明的,因此它们不会返回任何内容。但是,您可能有一个在某些情况下调用 exit
并在其他情况下返回整数的函数。
关于c - 无符号函数必须返回一些东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106870/