作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很好奇为什么存在 signed 关键字,因为我相信大多数整数和其他变量在默认情况下都是有符号的。将 signed 关键字放在 int 之前几乎没有任何作用。它有什么用途,为什么存在?
最佳答案
signed
至少有两个地方关键字不是空操作:
char
:“普通”的签名char
是实现定义的。在它是无符号类型的实现上,signed char
需要获得签名的变体。即使 char
是有符号类型,signed char
, char
, 和 unsigned char
都是不同的类型。struct foo {
int b:1;
};
b
的取值范围可能是 { -1, 0 } 或 { 0, 1 } 取决于实现。如果您想确保获得签名版本,您需要 signed
关键词。请注意,虽然标准对此不是很清楚,但在流行的实现中,这适用于 typedef
也是:如果位域成员使用 typedef
不包括显式签名的定义类型,实现定义的签名(在 GCC 上,由 -fsigned-bitfields
设置)也适用于那里。这意味着像 int32_t
这样的类型应该使用 signed
定义关键字以避免在位域中使用时出现非常糟糕的意外行为。关于c++ - 如果一个整数默认是有符号的,那么为什么会存在signed关键字呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64993672/
我有 json 数据: { "products": [ { "productId" : 0, "productImg" : "../img/product-ph
我是一名优秀的程序员,十分优秀!