例如:
byte a = 0x01; // Works fine
byte b = foo() ? 0x01 : 0x02; // Get error "Cannot impicitly convert int to byte"
为什么会这样呢?
例如:
byte a = 0x01; // Works fine
byte b = foo() ? 0x01 : 0x02; // Get error "Cannot impicitly convert int to byte"
为什么会这样呢?
byte
的变量时,编译器会检查该值是否适合byte
。一旦编译器知道该值适合,它会将文字视为byte
类型,与变量类型匹配。int
表达式分配给类型为byte
的变量。这触发了您所看到的错误。byte
类型。加上排中律原则,这应该给编译器提供了一种不需要强制转换的方法。然而,在编译器中实现这个功能比要求程序员放置显式转换更难,对于编译器团队来说肯定更容易(因为他们什么也不用做 :-))。 - Sergey Kalinichenko