gpt4 book ai didi

c - 无符号函数必须返回一些东西吗?

转载 作者:行者123 更新时间:2023-11-30 18:34:10 24 4
gpt4 key购买 nike

嘿,我正在做一个练习,我必须用 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 中所指定。此行为通常仅在异常情况下使用。例如,标准函数 abortexit 终止程序,因此它们不会返回。当然,它们是用 void 声明的,因此它们不会返回任何内容。但是,您可能有一个在某些情况下调用 exit 并在其他情况下返回整数的函数。

关于c - 无符号函数必须返回一些东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com