Main函数返回将不会返回高整数
main function return will not return high integer
我的程序是这样的我想调用这个程序:
int main(int argc,char *argv[]) {
int x = atoi(argv[1]);
return x;
}
用另一个程序调用该程序,并给它一个int形参。当x很低的时候效果很好但是假设x = 1000那么它会返回一个小数值
将main
的返回值传递给exit
函数
exit
函数的参数被声明为int
,您可以合法地传递任何int
值给它。在类unix系统上,除了低阶8位外,参数的所有部分都被忽略。例如,exit(INT_MAX);
是完全合法的,但它相当于exit(255);
(或exit(-1);
)。
在Windows中,你有32位,但是一个特定的值(STILL_ACTIVE
= 259,意味着进程仍在运行),你必须避免刚好超过字节值范围。
c++标准只定义了三个可能的值:0(表示成功),
EXIT_SUCCESS
和 EXIT_FAILURE
,后两个宏符号来自<stdlib.h>
(也声明了exit
函数)。
在Unix-land和Windows中,EXIT_SUCCESS
被定义为0,这是标准允许的。
不幸的是,在Windows中,通常使用进程退出代码来通信低级错误代码,EXIT_FAILURE
通常/总是定义为1而不是E_FAIL
。这意味着,即使对于文档记录为返回错误代码或HRESULT
作为退出代码的程序,也必须注意值1。可能只是EXIT_FAILURE
。
在Posix和Unix系统上,main
的返回值主要是0(即EXIT_SUCCESS
)和非0(例如EXIT_FAILURE
,即1),并且正如其他人解释的那样,只有较低的字节才重要。这是每个shell都可以很容易地处理的(例如,if
或&&
);要在shell中获得退出代码,否则需要$?
BSD系统在<sysexits.h>
中有几十个(单字节)常规退出码(但是Linux 通常不遵循这些约定)。
在Unix系统上,从程序"返回"整数i
的好方法是输出它(以文本形式,即使用printf("%dn", i);
…)到stdout。调用程序(shell或其他程序)可以读取它。在C程序中很容易使用popen(3)(与pclose
一起),或者更一般地学习pipe(7)-s
我个人的梦想是让程序返回一些字符串作为它们的退出值,但这不会很快发生,需要在操作系统和编译器和语言中进行更改....
main
返回的值实际上只是一个无符号字节。高位用于其他事情(特殊状态标志)。
至少在UNIX和类UNIX系统(如Mac OSX和Linux)上是这样。参见wait
系统调用的官方POSIX参考。
- 让bool方法返回其他整数
- C 字符串返回字符串的整数/双精度/长整型值
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- C++:为什么我的掷骰子函数在掷骰子数量时只返回偶数整数?
- 从 C++ 中定义的异常返回整数
- 递归返回可被给定整数 k 整除的位数
- 类型转换问题:返回为整数而不是浮点/类型
- 分段故障在类之间返回整数
- 如何将字符串传递给函数并返回整数
- atof 仅返回整数
- AVX/SSE 回合向下浮动并返回整数向量
- 元函数计算 x^n 并返回整数限制而不溢出(如果不可能)
- 我已经声明了整数并尝试返回整数,但它给了我错误
- C++ 堆栈字符串流函数返回整数与 ASCII
- 是否可以从模板函数返回整数
- 为什么 floor 不返回整数?
- 如何同时在本机 dll 中返回整数和字符 * 变量C++?
- 为什么difftime只返回整数