c++ - 减去字符不会溢出
问题描述
我正在实现库函数strcmp,根据输入,当第一个 char 数组较小时,它应该返回小于 0,当它更大时返回更大,当数组相等时返回 0。我遇到的一个聪明的技巧是找到有差异的第一个索引并减去索引处的字符。我认为这会中断,因为我们正在减去可能导致它们溢出的字符,所以我用这个程序对其进行了测试,它确实有效。
int res(){
char a = -128;
char b = 15;
return a-b;
}
output: -143
所以我的问题是为什么这行得通。在算术运算之前总是char
转换为整数还是编译器只是聪明?
解决方案
推荐阅读
- javascript - 在 VUE 中显示 JSON 字符串数组
- javascript - 如何在已安装的 PWA 应用程序上推送应用程序更新?
- c++ - 是否可以在 Visual Studio 上设置选项以保持不同多线程设置之间的确定性浮点结果?
- javascript - 我如何以 PDF 格式下载谷歌数据工作室报告
- java - 正确等待使用 Java 等待给定的数据库值?
- google-cloud-logging - 跳转到 Stackdriver 日志查看器中的搜索文本
- python - 使用带有 --debug 参数的 Pyinstaller 时出现的问题
- css - 如何修复 HTML 样式覆盖 CSS?
- javascript - Openlayers geometry shapes not zooming when map is zoomed
- c# - Convert.ToBase64String 给出空字符串