假设我们想通过一个函数返回一个长整型数据类型,应该如何实现呢?这种方式是否有效?
long int function()
{
long int b;
b=1000000000;
return b;
}
是的,它是有效的。
只要您返回一个适当的long int
值(我们可以看到,您正在这样做),并将其捕获到另一个long int
中(您需要小心),那么这应该没问题。
#)根据 C11
标准,LONG_MAX
是 +2147483647
,而 1000000000
小于该值。可参考第 §5.2.4.2.1 章节。
C标准规定long int
的最小大小为32位,存储方式应保证可以表示[-2147483647,+2147483647]范围内的值。 (请注意,2的补码表示为-2147483648)。 因此,将1,000,000,000分配给long int
总是被定义的。
返回long int
的值副本也是明确定义的。
请注意,如果您没有初始化b
(即如果您省略了语句b = 1000000000;
),那么您程序的行为将是未定义的。
long int
,那么这个问题就非常相关了。但这并不总是明确定义的。 - Bathshebaint
更小。这在 6.4.4.1 中已经定义明确。在处理 100 亿时,编译器可能会选择 long long int
类型。如果你将其转换为 long 类型,则以下规则适用(6.3.1.3):“否则,新类型为有符号类型,且该值无法表示;结果要么是实现定义的,要么是引发实现定义的信号。”因此,一些实现定义的事情是肯定会发生的。 - Lundin一个函数可以返回几乎任何类型:
6.9.1
函数的返回类型应该是void或者除了数组类型之外的完整对象类型。
就是这样。
b=1000000000
的有效性。 - Bathsheba