gpt4 book ai didi

c - 为什么无符号整数变量通常不受整数提升的影响?

转载 作者:行者123 更新时间:2023-12-04 10:02:17 25 4
gpt4 key购买 nike

在阅读了很多关于整数提升的问题后,似乎普遍认为整数提升或仅适用于小整数类型,例如 short intchar.

但是,我想知道为什么 unsigned int 变量是 i。 e.值 15 也不应提升为 int。毕竟,它的转换等级等于 int 和 unsigned int 的等级,正如下面引用中的语句 (1) 所要求的。

由于 int 可以毫无问题地表示值 15(在我所知道的所有平台上),它应该转换为 int。

Integer promotions

The following may be used in an expression wherever an int or unsigned int may be used:

  1. An object or expression with an integer type whose integer conversion rank is less than or equal to the rank of int and unsigned int.

  2. A bit-field of type _Bool, int, signed int, or unsigned int.

If an int can represent all values of the original type (as restricted by the width, for a bit-field), the value is converted to an int; otherwise, it is converted to an unsigned int. These are called the integer promotions. All other types are unchanged by the integer promotions.

最佳答案

However, I'm wondering why an unsigned int variable of i. e. value 15 shouldn't be promoted to an int as well. [...] an int can represent the value 15 without any problems

这个说法有两个问题:

  • 整数提升意味着“提升为int”;它的意思是“提升为 intunsigned int”。因此,“提升”一个 unsigned int 没有意义:它已经被提升了。
  • 整数提升规则不考虑表达式的当前值。这些规则的编写方式专门用于讨论类型的所有 值。因此,int 能够表示值 15 的事实是无关紧要的,因为 int 不能表示 的所有值>无符号整数

关于c - 为什么无符号整数变量通常不受整数提升的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com