C 抓取退出值
我仍在学习C语言的过程中,处理目前的情况对我来说有点棘手 我创建了一个名为C 抓取退出值,c,C,我仍在学习C语言的过程中,处理目前的情况对我来说有点棘手 我创建了一个名为exitvalue的全局变量来跟踪该值。我知道我可以使用return,但我想在不使用return的情况下进行实验 我希望通过不断将值更改为0或1来跟踪每个if语句中的exitvalue条件 下面是我的示例代码片段: //Global variable int exitvalue; int functionName() { if (some conditions) { // some cod
exitvalue
的全局变量来跟踪该值。我知道我可以使用return,但我想在不使用return的情况下进行实验
我希望通过不断将值更改为0或1来跟踪每个if语句中的exitvalue
条件
下面是我的示例代码片段:
//Global variable
int exitvalue;
int functionName() {
if (some conditions) {
// some codes....
exitvalue = 1;
exit(1);
}
exitvalue = 0;
}
问题是为什么exitvalue
在到达functionName()
中的if语句后没有变为1
?exit(1)
是否类似于中断语句并阻止它将值exitvalue
设置回0
希望有人能解释我犯的这个错误。谢谢。该变量确实会更改其值,但随后您会立即退出并终止该过程。exit
功能不返回。我想您应该使用return
而不是exit
。return
语句允许退出函数(带有返回值),而exit
用于退出程序。这是你想要的吗
return 0;
或
或
冒着助长全球变量坏习惯的风险:
void functionName()
{
if (some conditions)
{
// some code....
exitvalue = 1 ;
}
else
{
exitvalue = 0 ;
}
}
或者只是:
void functionName()
{
exitvalue = 0 ;
if (some conditions)
{
// some code....
exitvalue = 1 ;
}
}
调用库函数exit
将终止正在运行的程序。如果使用等于0
或EXIT\u SUCCESS
的参数调用,它将向主机环境返回成功终止状态。如果使用等于EXIT\u FAILURE
的参数调用它,它将返回不成功的终止状态。如果参数不是这两个宏,则终止状态取决于实现
退出
功能仅用于此目的,用于立即终止正在运行的程序,并向主机环境发出程序执行成功或不成功的信号
如果只想从函数返回整数值,请使用带有整数参数的return
关键字,例如return 5
您发布的代码包含一个声明为返回整数的函数:int functionName()
。因此,此函数应返回一个整数值,并接受任意数量的输入参数。请注意,在C中,不接受参数的函数应使用类型为void
的参数列表来声明,例如intfunctionname(void)
由于代码缺少return语句,因此它在技术上是无效的,exit
函数不用于从函数返回值,正如我前面解释的那样。此外,删除exit
语句不会阻止exitvalue
全局变量假定值为零。如果满足条件,它将在if语句中设置为1,但一旦exitvalue=0,它将被覆盖回零代码>代码在退出if语句块时执行
在我看来,您只需要监视程序执行,一种简单的方法是在代码中感兴趣的位置添加对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");
}
}
有关printf
函数的更多信息,您可以查看此链接:退出函数终止整个程序。我也尝试删除退出(1),但在打印时exitvalue=0。您需要发布一个。如果看不到printf
和代码的其余部分,就很难知道它为什么不能按预期的方式工作。int functionName()
应该返回一个值,例如return 1代码>。请启用编译器警告,并了解它们的含义!我也尝试删除出口(1),但当我print@coava也许你应该试着创造一个新的世界并展示给我们看?或者至少使用调试器逐步检查代码,以查看条件是否为真,变量是否按您的想法设置。是,并显示如果(某些条件)
确实在做什么,以便我们知道其结果。@coava:Place theexitvalue=0代码>在else子句中,否则当函数返回时,它将始终为零。因此,只需直接键入return
,而不提供值0或1?@coava:是,除非该值无效,因为您将functionName()
声明为returningint
-因此,您发布的代码无效。既然您开始学习C,那么您应该知道,对于比较开明的开发人员来说,使用全局变量和最终返回不止一个的函数通常被认为是不好的做法。它们不是你应该“精通”的习惯。
void functionName()
{
exitvalue = 0 ;
if (some conditions)
{
// some code....
exitvalue = 1 ;
}
}
#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);
}