根据文档, int.MaxValue
是一个int字段。当我做
int a = int.MaxValue;
int b = a + 1;
b
具有int.MinValue
预期的值。但是当我这样做
int a = int.MaxValue + 1;
我收到编译错误
该操作在检查模式下的编译时溢出
为什么有区别?
从https://msdn.microsoft.com/zh-cn/library/aa691319(v=vs.71).aspx:
常量表达式是可以在编译时完全求值的表达式。
和
只要表达式是上面列出的类型之一并且仅包含上面列出的构造,表达式就在编译时进行评估。
和
除非将常量表达式显式放置在未经检查的上下文中,否则在表达式的编译时求值过程中在整型算术运算和转换中发生的溢出总是会导致编译时错误
因此,这解释了为什么int a = int.MaxValue + 1;
给出编译错误(int.MaxValue
是const int
)。
的
int a = int.MaxValue;
int b = a + 1;
有所不同,因为它不是常量表达式。它们是两个非const变量(请参阅和仅包含上面列出的结构?显然声明中间变量不是可接受的结构之一:-))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句