嘿,我正在做一个练习,我必须用 C 编写一个无符号函数,我有一个问题,我是否必须因为函数的类型而返回一些东西?还是可以选择的??
在正常使用中,任何声明返回值的函数都应该返回一个值。这很大程度上是一个良好的编程实践的问题。未能返回值通常是错误的迹象。然而,C 标准并不要求这样做,但有两个例外。
C 2018 6.9.1 12 允许函数通过到达其代码末尾而不返回值来终止,前提是调用者不使用该函数的值:
除非另有说明,如果}
到达终止函数,并且函数调用的值由调用者使用,行为是未定义的。
函数在某些情况下可能返回值而在其他情况下不返回的一种情况是,它被设计为根据命令执行各种不同的操作。例如:
unsigned DoSomething(int command, int parameters[])
{
switch (command)
{
case GetSomething:
…
return Something;
case RememberSomething;
Something = parameters[0];
…
break;
}
}
此类设计可能容易出错,应仔细考虑。由于函数被声明为返回一个值,程序员可能会期望它这样做,并在没有返回值的情况下无意中将函数的值分配给另一个对象,从而导致未定义的行为。
此外,函数可能根本不返回,并且有一个函数说明符用于显式告诉编译器事实如此,_Noreturn
,如 6.7.4 中规定。此行为通常仅在异常情况下使用。例如,标准函数abort
and exit
终止程序,这样它们就不会返回。当然,它们是用void
,所以他们从不返回任何东西。但是,您可能有一个调用的函数exit
在某些情况下返回整数,在其他情况下返回整数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)