c语言中的Return语句

c语言中的Return语句,c,return,return-value,C,Return,Return Value,在这段代码中,当我编写不带“bonues”变量的返回语句时,答案是3750。当写它时,它给出4750 那么,为什么在没有写入bonues变量的情况下就不能执行if语句呢 #include <stdio.h> #include <stdlib.h> int calcbouns(int yearworks); int main() { int employee_one =calcbouns (15); printf("%d",empl

在这段代码中,当我编写不带“bonues”变量的返回语句时,答案是3750。当写它时,它给出4750


那么,为什么在没有写入
bonues
变量的情况下就不能执行if语句呢

#include <stdio.h>
#include <stdlib.h> 

int calcbouns(int yearworks); 

int main() 
{    
    int employee_one =calcbouns (15);    
    printf("%d",employee_one);    
    return 0 ;
} 

int calcbouns(int yearworks)
{    
    int bonues = yearworks*250;    
    if (yearworks>10) 
    {
        bonues +=1000;
    }
    return bonues ;
}
#包括
#包括
int calcbouns(int yearworks);
int main()
{    
国际雇员人数=calcbouns(15);
printf(“%d”,一名员工);
返回0;
} 
int calcbouns(int yearworks)
{    
int bonues=年工作*250;
如果(年工>10)
{
骨+=1000;
}
还骨;
}

calcbouns
是一个指定为返回整数的函数。当你写
时,返回bonues
,函数的返回值指定为
奖金的值

当你写
返回时您违反了语言约束。“空”返回语句不能出现在非void函数中。否则将导致程序具有未定义的行为。未定义行为的一个方面是奇怪的返回值


结论?不要违反语言约束,并在编译时启用所有警告(甚至可能将其视为错误),以便编译器可以更好地保护您免受约束违反的影响。

calcbouns
是指定为返回整数的函数。当你写
时,返回bonues
,函数的返回值指定为
奖金的值

当你写
返回时您违反了语言约束。“空”返回语句不能出现在非void函数中。否则将导致程序具有未定义的行为。未定义行为的一个方面是奇怪的返回值

结论?不要违反语言约束,并在编译时启用所有警告(甚至可能将它们视为错误),这样您的编译器就可以更好地保护您免受违反约束的影响。

所以您说:“如果我写
返回bonues;
它返回4750,如果我只写
返回;
它返回3750?”

你应该总是说出你想返回的内容。如果你打开了警告,你可能会收到警告

但是,如果您在英特尔x86平台上,函数的返回值会被放入
eax
寄存器中。因此,您会返回
eax
寄存器中当前的值,在添加任何内容之前,该值就是
bonues
的值。

您说:如果我写
返回bonues
返回4750,如果我只写
返回它返回3750

你应该总是说你想回报的话。如果打开了警告,则可能会收到警告


但是,如果您使用的是Intel x86平台,则函数的返回值会被放入
eax
寄存器中。因此,您返回当前在
eax
寄存器中的内容,在添加任何内容之前,该内容就是
bonues
的值。

“为什么在不写入“bonues”变量的情况下无法执行if语句”这不是正在发生的事情。如果返回时没有返回值,那么您就是在调用未定义的行为。此外,当编译器向您发出警告时,您应该认真倾听它。“为什么在不编写“bonues”变量的情况下无法执行if语句”这不是正在发生的事。如果返回时没有返回值,那么您调用的是未定义的行为。此外,当编译器向您发出警告时,您应该认真倾听。