Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C编程标准中,“整数”是什么意思-127-1U;?_C_Binary - Fatal编程技术网

在C编程标准中,“整数”是什么意思-127-1U;?

在C编程标准中,“整数”是什么意思-127-1U;?,c,binary,C,Binary,出于某种原因,我相信这实际上是指-128作为一个整数,但为什么不只是写-128呢 他们可能试图确定用于在特定机器或编译器上保存数据的位的大小。使用8位符号计算,计算将在流量给定128下进行,或不在流量给定-128下进行。-127-1U是一个常量表达式 127是一个整数常量。它的类型为int,具有明显的价值。一元-运算符应用于它,产生值-127,类型也为int 1U也是一个整数常量。U后缀使其类型为unsigned int 第二个-是减法运算符,它使用两个操作数。根据解析不同类型的二进制(两个操作

出于某种原因,我相信这实际上是指-128作为一个整数,但为什么不只是写-128呢

他们可能试图确定用于在特定机器或编译器上保存数据的位的大小。使用8位符号计算,计算将在流量给定128下进行,或不在流量给定-128下进行。

-127-1U
是一个常量表达式

127
是一个整数常量。它的类型为
int
,具有明显的价值。一元
-
运算符应用于它,产生值
-127
,类型也为
int

1U
也是一个整数常量。
U
后缀使其类型为
unsigned int

第二个
-
是减法运算符,它使用两个操作数。根据解析不同类型的二进制(两个操作数)运算符的规则,
int
操作数隐式转换为
无符号int
。将
-127
int
转换为
unsigned int
(假设
int
采用典型的32位2补码表示法)会产生
4294967169
类型的
unsigned int
(通常是
UINT\u MAX-126U
)。从中减去
1U
将产生
4294967168
,同样是
无符号整数类型


我不知道这个表达的目的是什么。我必须看到更多的背景来推测。写
UINT\u MAX-127U

[需要引文]:)会更清楚一些。我没有在中看到它。你能给出一些上下文来说明你在哪里看到过它,即一段可编译的代码吗?这样你会得到一个更好的答案。如果
int
大小是8位,这将是相关的。对于我的32位
int
库有
#define int_MIN(-2147483647-1)
,因为
2147483648
int
范围之外,所以
-2147483648
不起作用。相关:签名的“下溢”是UB。@EugeneSh。计算是在无符号整数中进行的。没有“U”整数类型。整数常量上的
U
后缀会导致其类型为
unsigned int
(如果值超过
UINT\U MAX
,则为某种更宽的无符号整数类型)<代码>1
属于类型
int
1U
的类型是
unsigned int
@mch是的,但它不会“下溢”,但首先
-127
将通过添加
UINT_MAX+1
然后减去
1U
转换为
unsigned int int
。因此基本上-128会导致下溢,可以使用-127-1U覆盖?