打算重新捡起C++相关的东西,于是开始了学习。
第一问:main函数设置返回值为-1,在系统中是如何处理这个错误标识的呢?
现象:
首先简单编写一个main函数的代码,设置return -1。编译运行后,在命令行获取返回值信息得到的是255???
echo $?
255
原因:
无论C/C++,从main函数中返回的效果都相当于调用exit函数,main函数的返回值会作为传给exit的函数。而exit或者main函数中的return, 只能使用0~255之间的值。 由于 -1 的unsigned值就是255,因此在命令行显示的错误码为255。
总结:
系统用8bits的无符号数标识退出状态,所以退出的状态值为0至255。
因此退出状态值不要小于0且不要大于255,因为只有8bits空间承载数值,所以大于255的数值会被截断,不能返回我们期望的数值。
例如:返回值设置为256则实际返回0,返回值设置为257则实际返回1。系统会截取低8位作为最终的状态码。