C 关于整数升级
根据C17 6.3.1.1 如果int可以表示原始类型的所有值(受宽度限制,对于位字段),则该值将转换为int;否则,它将转换为无符号整数 “所有值”是指同一范围内的整个标识符吗? 那么,当某些标识符在同一标识符范围内具有不能用int表示的变量(例如long-long-int)时,标识符是否没有任何提升 “所有值”是指同一范围内的整个标识符吗 我不知道为什么您认为范围中的所有标识符都很重要。整数提升适用于单个项,可以是对象(例如变量)或表达式 它的意思是,如果这个项目的每一个可能的值(已经是根据您的报价(a)之前的段落保证适合C 关于整数升级,c,C,根据C17 6.3.1.1 如果int可以表示原始类型的所有值(受宽度限制,对于位字段),则该值将转换为int;否则,它将转换为无符号整数 “所有值”是指同一范围内的整个标识符吗? 那么,当某些标识符在同一标识符范围内具有不能用int表示的变量(例如long-long-int)时,标识符是否没有任何提升 “所有值”是指同一范围内的整个标识符吗 我不知道为什么您认为范围中的所有标识符都很重要。整数提升适用于单个项,可以是对象(例如变量)或表达式 它的意思是,如果这个项目的每一个可能的值(已经是根据
int
或无符号int
的类型之一)都可以用int
类型表示,它将被提升为int
。否则它将升级为无符号int
(a) 案文全文指出: 在表达式中使用
int
或无符号int
时,可以使用以下内容:
- 整数类型的对象或表达式(不包括
或int
),其整数转换秩小于或等于无符号int
的秩,以及int
无符号整数
- 类型为
、\u Bool
、int
或有符号int
的位字段无符号int
int
可以表示原始类型的所有值(受宽度限制,对于位字段),则该值将转换为int
;否则,它将转换为无符号int
。这些被称为整数促销。所有其他类型均不受整数升迁的影响
“所有值”是指同一范围内的整个标识符吗
我不知道为什么您认为范围中的所有标识符都很重要。整数提升适用于单个项,可以是对象(例如变量)或表达式
它的意思是,如果这个项目的每一个可能的值(已经是根据您的报价(a)之前的段落保证适合int
或无符号int
的类型之一)都可以用int
类型表示,它将被提升为int
。否则它将升级为无符号int
(a) 案文全文指出: 在表达式中使用
int
或无符号int
时,可以使用以下内容:
- 整数类型的对象或表达式(不包括
或int
),其整数转换秩小于或等于无符号int
的秩,以及int
无符号整数
- 类型为
、\u Bool
、int
或有符号int
的位字段无符号int
int
可以表示原始类型的所有值(受宽度限制,对于位字段),则该值将转换为int
;否则,它将转换为无符号int
。这些被称为整数促销。所有其他类型均不受整数升迁的影响
它与作用域或其他变量无关,它只是讨论类型的可能值。例如-“unsigned char的所有值”表示集合{0,1,2,…,UCHAR_MAX}它与作用域或其他变量无关,它只是讨论类型的可能值。例如-“unsigned char的所有值”表示集合{0,1,2,…,UCHAR_MAX}@paxdiable,我看到提升的标识符被用作操作数。我认为操作和标识符的作用域有关。C17 6.3.1.1是算术操作数(6.3.1)的子类。@paxdiable我看到提升的标识符被用作操作数。我认为操作和标识符的作用域有关。C17 6.3.1.1是算术操作数(6.3.1)的子类。