作者:ID张蕾 | 来源:互联网 | 2023-02-04 19:29
该标准允许任意两种整数类型之间的隐式转换,无论它们的值如何.
编译器警告与合法代码无关; 当您的代码可能没有按照您的意愿执行时,编译器会发出警告.
在您的特定情况下,n1
将为8并且n2
将具有实现定义的值.这两个作业都是合法的C++,但后者可能不是你想要的.
相关标准:
可以将整数类型的prvalue转换为另一个整数类型的prvalue.可以将未范围的枚举类型的prvalue转换为整数类型的prvalue.
如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模2 n,其中n是用于表示无符号类型的位数).[注意:在二进制补码表示中,此转换是概念性的,并且位模式没有变化(如果没有截断).- 结束注释]
如果目标类型是有符号的,如果它可以用目标类型(和位字段宽度)表示,则该值不变; 否则,该值是实现定义的.
N4141中的4.7/1-3
1> Baum mit Aug..:
该标准允许任意两种整数类型之间的隐式转换,无论它们的值如何.
编译器警告与合法代码无关; 当您的代码可能没有按照您的意愿执行时,编译器会发出警告.
在您的特定情况下,n1
将为8并且n2
将具有实现定义的值.这两个作业都是合法的C++,但后者可能不是你想要的.
相关标准:
可以将整数类型的prvalue转换为另一个整数类型的prvalue.可以将未范围的枚举类型的prvalue转换为整数类型的prvalue.
如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模2 n,其中n是用于表示无符号类型的位数).[注意:在二进制补码表示中,此转换是概念性的,并且位模式没有变化(如果没有截断).- 结束注释]
如果目标类型是有符号的,如果它可以用目标类型(和位字段宽度)表示,则该值不变; 否则,该值是实现定义的.
N4141中的4.7/1-3