我还在学习C语言,对我来说处理目前的情况有点棘手。
我创建了一个名为exitvalue
的全局变量来跟踪值。我知道我可以使用return,但我想在不使用return的情况下进行实验。
我想通过不断将值更改为0或1来跟踪每个exitvalue
中的if statement
条件。
以下是我的示例代码的片段:
//Global variable
int exitvalue;
int functionName() {
if (some conditions) {
// some codes....
exitvalue = 1;
exit(1);
}
exitvalue = 0;
}
问题是exitvalue
在到达1
中的if语句后没有更改为functionName()
的原因?是不是exit(1)
有点像破坏语句并阻止它将值exitvalue
设置回0?
希望有人可以解释我所犯的这个缺陷。感谢。
答案 0 :(得分:4)
变量 更改其值,但随后您立即退出并终止该过程。 <{1}}函数不会返回。
答案 1 :(得分:2)
对库函数exit
的调用将终止正在运行的程序。如果使用等于0
或EXIT_SUCCESS
的参数调用,它将向主机环境返回成功的终止状态。如果使用等于EXIT_FAILURE
的参数调用它,它将返回不成功的终止状态。如果参数不是这些宏,则终止状态取决于实现。
exit
函数应仅用于此目的,以立即终止正在运行的程序,并向主机环境发出成功或不成功的程序执行信号。
如果您只想从函数返回一个整数值,请使用带有整数参数的return
关键字,例如return 5
。
您发布的代码包含一个声明为返回整数的函数:int functionName()
。因此,此函数应返回一个整数值,并接受任意数量的输入参数。请注意,在C中,不接受参数的函数应使用类型void
的参数列表声明,例如int functionName(void)
。
由于您的代码缺少一个返回语句,它在技术上是无效的,exit
函数不用于返回函数中的值,如前所述。此外,删除exit
语句不会阻止exitvalue
全局变量假设值为零。如果满足条件,它将在if语句中设置为1,但是一旦从if语句的块退出时执行exitvalue = 0;
代码,它将被重写为零。
在我看来,您只想监视程序执行,一种简单的方法是在代码中的有趣位置添加printf
的调用。这可以通过包含系统头stdio.h并执行如下调用来完成:
#include <stdio.h>
void myCoolFunction(void)
{
if (condition1)
{
printf("Condition one was satisfied.\n");
}
else if (condition2)
{
printf("Condition two was satisfied.\n");
}
else
{
printf("Something else happened.\n");
}
}
如果要打印整数变量的值,可以使用此语法。
void myFunction(void)
{
int myValue = 4;
printf("The value of the myValue variable is: %d.\n", myValue);
}
有关printf
功能的详细信息,您可以查看以下链接:http://www.cplusplus.com/reference/cstdio/printf/
答案 2 :(得分:1)
我认为你想使用return
而不是exit
。 return
语句允许退出函数(带有返回值),而exit
用于退出程序。这是你想要的吗?
return 0;
或
return 1;
或
return exitvalue;
答案 3 :(得分:1)
冒着鼓励全球变量坏习惯的风险:
void functionName()
{
if (some conditions)
{
// some code....
exitvalue = 1 ;
}
else
{
exitvalue = 0 ;
}
}
或者只是:
void functionName()
{
exitvalue = 0 ;
if (some conditions)
{
// some code....
exitvalue = 1 ;
}
}