- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我在 C 中执行以下代码:
#include <stdint.h>
uint16_t a = 4000;
uint16_t b = 8000;
int32_t c = a - b;
printf("%d", c);
它正确地打印出“-4000”作为结果。不过,我有点疑惑:用一个更大的无符号整数减去另一个,不应该算术溢出吗?这里有什么选角规则在起作用?这个问题似乎有点菜鸟,所以任何引用将不胜感激。
最佳答案
这个问题其实有点复杂。算术表达式的操作数使用您可以在 Standard (C89) 的第 3.2.1.5 节中看到的特定规则进行转换。 .在您的情况下,答案取决于类型 uint16_t
是什么。如果它小于 int
,例如 short int
,那么操作数将转换为 int
,您将得到 -4000,但在 16-位系统,uint16_t
可以是 unsigned int
并且不会自动转换为有符号类型。
关于分配给较大宽度的整数时的 C 整数溢出行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728847/
我正在通过 PHP 将 .csv 中的两行插入到表中。 我还会跟踪任何错误,如果发生错误,我不会提交事务。插入表后,我检索结果行的 ID(全部在一个事务中提交),并且 csv 的第一行对应于第二个 I
一个应用程序托管一个具有三个接口(interface)的 Web 服务,用于三个单独且独立的操作,所有这些操作都在应用程序的不同组件中实现,彼此独立,例如在不同的包等中,所以他们对彼此了解不多,只共享
我希望在单击特定表格数据单元格时同时选中单选按钮和单选按钮单击事件。我已经使用以下方法实现了这一点: $(document).ready(function() { $("td").click(
JSFiddle:https://jsfiddle.net/oyp1zxaq/ 本质上,我只是想在较大的 div 中放置四个具有定义宽度的较小 div,但我希望它们在其中间隔开。 我想知道是否有一种方
我在一个布局中有两个 View 。我将分别称它们为 View A 和 View B。 ┌──────┐ │┌─┐┌─┐│ ││A││B││ │└─┘└─┘│ └──────┘ 父布局(包括View A
我是一名优秀的程序员,十分优秀!