Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 抓取退出值_C - Fatal编程技术网

C 抓取退出值

C 抓取退出值,c,C,我仍在学习C语言的过程中,处理目前的情况对我来说有点棘手 我创建了一个名为exitvalue的全局变量来跟踪该值。我知道我可以使用return,但我想在不使用return的情况下进行实验 我希望通过不断将值更改为0或1来跟踪每个if语句中的exitvalue条件 下面是我的示例代码片段: //Global variable int exitvalue; int functionName() { if (some conditions) { // some cod

我仍在学习C语言的过程中,处理目前的情况对我来说有点棘手

我创建了一个名为
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 the
exitvalue=0在else子句中,否则当函数返回时,它将始终为零。因此,只需直接键入
return
,而不提供值0或1?@coava:是,除非该值无效,因为您将
functionName()
声明为returning
int
-因此,您发布的代码无效。既然您开始学习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);
}