2019独角兽企业重金招聘Python工程师标准>>>

为什么程序return -1或exit(-1)而获取到的值是255

今天用python获取C语言编写的可执行程序的返回值,发现一个问题,发现程序退出的时候"return -1;",而获取到的返回值是255。为啥不是-1呢?

查了一下资料,确定原因是系统用8bits的无符号数标识退出状态,所以退出的状态值为0至255。而-1用8bits的无符号数的值就是255。

需要说明一下的是:退出状态值不要大于255,因为只有8bits空间承载数值,所以大于255的数值会被截断,不能返回我们期望的数值

下面针对性的做些测试:

1. 返回值是-1的情况

//程序: 打印设定数值的bit数值并返回
int main(void)
{char var = -1;int i;for(i = 7; i >= 0; i--){printf("%u ", (var & (0x01 << i)) >> i);}printf("\n");return var;
}
[root@localhost tmp]# gcc -o test test.c && ./test
1 1 1 1 1 1 1 1
[root@localhost tmp]# echo $?
255

2. 若程序中返回大于255的场景

//返回值是256
int main(void)
{short var = 256;int i;for(i = 15; i >= 0; i--){printf("%u ", (var & (0x01 << i)) >> i);}printf("\n");return var;
}
[root@localhost tmp]# gcc -o test test.c && ./test
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
[root@localhost tmp]# echo $?
0

可以看到返回值256的时候,返回值只截取了低8位,返回值是0。

//返回值是257
int main(void)
{short var = 257;int i;for(i = 15; i >= 0; i--){printf("%u ", (var & (0x01 << i)) >> i);}printf("\n");return var;
}
[root@localhost tmp]# gcc -o test test.c && ./test
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
[root@localhost tmp]# echo $?
1

可以看到返回值257的时候,返回值只截取了低8位,返回值是1。

转载于:https://my.oschina.net/zhangxu0512/blog/724022

为什么程序return -1或exit(-1)而获取到的值是255相关推荐

  1. 小程序“Mustache”语法{{}}(双大括号)获取不到值或图片

    H5端没问题,在小程序端却不能正常显示. 确认传的值是否为0,小程序会将0解析为不显示,请尝试加上在双大括号的值后加|| 0 .确定data里有没有定义值或图片的变量,若没定义图片变量而直接使用的话也 ...

  2. return,return 0 ,return -1 , exit(-1),return 1

    对于main函数指定为int型,返回int值 return,return 0 ,return -1 , exit(-1) ,exit(0) return 如果什么都不接的话,其实就是void类型函数的 ...

  3. 程序“[4176] char.exe: 本机”已退出,返回值为 0 (0x0)

    使用VS2010运行程序,黑屏一闪而过,说程序"[4176] char.exe: 本机"已退出,返回值为 0 (0x0) 解决方法是: 在引用头文件时,加上#include &qu ...

  4. 微信小程序注册/登陆,若依后台获取token

    微信小程序注册/登陆,若依后台获取token 后端接口: @ApiOperation(value = "小程序登入", httpMethod = "POST") ...

  5. Python调用外部EXE程序遍历窗体及控件并获取控件信息。

    背景 我的工作中经常手工运行一个windows程序(密码生成工具),获取该程序的计算结果,手工填到登录表单的中.该程序非常久远,已无人维护.根据凡是重复2次以上的工作都应该自动化原则,那么我来写个自动 ...

  6. ajax获取php echo值,ajax 接受 php echo 与 return 区别

    ajax就收return的值,若接受不到,试一下echo function values($price,$tax=0.45){ $price=$price+($price*$tax); echo $p ...

  7. 微信小程序修改数组中的元素_微信小程序——this.setData()动态修改数组中的某一值...

    微信小程序--this.setData()动态修改数组中的某一值S8v编程技术_踩坑日志_进阶指南_无知人生 大家是不是都觉得微信小程序的开发方式和 vue react 这种框架的开发方式很像?S8v ...

  8. 小程序蓝牙获取电子秤的值【uni-app】

    项目场景: 提示:这里简述项目相关背景: 微信小程序连接电子秤[品牌:弓正] 流程: 初始化 搜索蓝牙设备 获取蓝牙设备信息 连接蓝牙设备 获取蓝牙设备所有的服务 获取蓝牙设备特征值 监听蓝牙设备特征 ...

  9. Visual Studio 2017C#打包应用程序详细教程,重写安装类获取安装路径,附加各种奇葩问题描述

    前言 C#写好一个应用程序,总想分享给自己的朋友或者上架,然而被困在打包之外,这次为大家带来近期我的经验,经过几天的摸索,发现网上的教程并不全面,会给初学者带来很多疑问,这里将做些问题描述与解答. / ...

最新文章

  1. python 包介绍:osmnx
  2. 计算机软件技术 上海电力学院,上海电力学院 计算机软件技术 实验三 用头插法和尾插法创建线性表...
  3. 项目中使用EasyPOI完成监控设备历史数据的导出
  4. css改变指针形状,css 指针样式
  5. 除了中国,原来还有这么多国家采用十二生肖的啊~| 今日最佳
  6. vue 公用组件开发 确认框confirm
  7. 【python】字符串连接错误,类型错误 TypeError: coercing to Unicode
  8. Exchange 2013 邮箱管理
  9. Ray.Xu 写得 RTEMS 介绍(最新版本,全面,覆盖了CVS Head)
  10. [HDOJ2512]一卡通大冒险(DP)
  11. 单片机破解方法(摘录)
  12. Small Basic 语言 学习笔记
  13. 开源开放 | OpenKG发布第二批并更新近十个新冠知识图谱开放数据集
  14. 各种主流浏览器内核引擎的对比分析
  15. 内容安全策略(content-security-policy)
  16. iphone 如何给cydia添加中文源和威锋源
  17. 【其实是空空荡荡的牵挂,没有结局的怀念】
  18. 知乎高赞:哪些事坚持做3个月就会有巨大改变?
  19. MOTO不相信眼泪!艰难回归!你,准备好了吗?
  20. 2020年5月面试精心整理java面试题,覆盖了大部分面试题(附答案)

热门文章

  1. SAP Return to External Vendor
  2. 人工智能德国造 “弱AI“强势登场
  3. 寒门出贵子,传递正能量
  4. SAP MM 预制发票相关的Function Modules
  5. 利用人工智能进行网页设计的10种方法
  6. 在Python函数内部赋值操作是新的变量而不是全局变量
  7. conda如何添加,删除镜像channel,以及其他常见使用方法。
  8. 美国自动驾驶监管里程碑:新法规允许自动驾驶汽车取消方向盘
  9. 中国科学院院士褚君浩:第四次工业革命和智能时代
  10. Nature:2020年最佳科学影像,每一张都是壁纸,每一张都是历史