编译器设计 - 当多个转换级别消失时,自动类型转换如何发生

Compiler Design - How does does automatic type casting occur when multiple cast levels away

要从 byte 转换为 short,我假设在后台调用了某种带有签名的方法是否正确:

short byte2Short(byte b);

但是 byte 必须转换为 long 的情况呢? IE。在转换图中,它们没有直接通过箭头连接。

是否有特定的方法将 byte 转换为 long,例如:

long byte2Long(byte b);

或者它调用一系列方法来转换字节,如下所示:

  1. short byte2Short(byte b);

  2. int short2Int(short s);

  3. long int2Long(int i);

所以基本上我的问题是,如果从字节转换为长整型,转换是否直接如下: byte -> long

或者是间接的,比如: byte -> short -> int -> long

转换直接发生,即 byte -> long

C implicit conversions

If the types have the same signedness (both signed or both unsigned), the operand whose type has the lesser conversion rank1 is implicitly converted2 to the other type.