c - C简单程序/你能解释一下结果吗?
问题描述
这是代码:
char number=4;
while(number<5) number=number-1;
printf("%d" , number);
结果=127,为什么?你能解释一下吗?谢谢
解决方案
您的循环设置为迭代直到 number < 5。发生的情况是值递减到 5、4、3、2、1、0、-1 ... -128。当它尝试再减去一个值时,您会得到一个环绕到 char 可以容纳的最大值(8 位、127 或 0x7F)。此时,循环条件不再成立,因此您的循环退出。因此,环绕后的最终值为 127。
推荐阅读
- android - 使用 Map 获取具有相同字符串名称的 ArrayList 内的整数总和
- c# - 我如何知道是什么可能导致强制断开与 ASP.NET WebApi 服务的连接?
- postgresql - PostgreSQL:第一个和最后一个之间的计算
- vue.js - vuetify.js:加载了 vue-router 的 v-form-textfield 不可见
- java - 如何检查一个字符串是否包含Java中所有重复的字母?
- python-3.x - 给定一个参数化测试,我怎样才能为所有参数只打印一次消息?
- azureservicebus - Masstransit Azure 服务总线和 DI 请求/响应模型
- ruby-on-rails - 使用 JSONAPI 在请求中发送文件
- c - 将值输入到结构化数组中的数组时出现分段错误
- flutter - 如何在 Flutter 中传递回调