gpt4 book ai didi

c - 函数的意外返回值

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:22 25 4
gpt4 key购买 nike

在用户定义的 func 中,我已将值 10 赋值给 k。该函数正在返回 sum 的值。为什么函数返回 sum 的值而不是 k 的值?

#include<stdio.h>

int func(int i, int j){
int sum = 0;
sum = i + j;
int k = 10;

}
int main()
{
int i, j;
scanf("%d%d", &i, &j);
printf("%d", func(i, j));
return 0;
}

最佳答案

假设您想知道函数不返回最后一个计算语句的值并随机返回其他内容的原因:C 运行时调用约定使用特定的寄存器来返回值(通常是 eax)。 return 语句专门将所需的值加载到该寄存器中,而在没有它的情况下,寄存器包含最后移入其中的值(主要是来自最后执行的语句的垃圾),它可以是任何先前的语句,不需要最后一个。这就是行为未定义的原因。

关于c - 函数的意外返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57736231/

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