Comment by astrange

Comment by astrange 2 days ago

5 replies

The one that annoys me is that people think implicit type conversions are dangerous for some reason, so they also disallowed `char a = 10; short b = a;` without writing a cast even though this makes no sense.

resonious 2 days ago

It feels like "sharp edges" often means "I once had a horrible bug due to accidentally misusing this". But if you cut features based on that definition, you'd soon have an empty programming language.

  • lukan 2 days ago

    Java was apparently quite successful, though. So maybe they got the balance right for their goal?

pdw 2 days ago

The signedness of `char` is implementation-defined, it is signed on x86 but unsigned on ARM. So assigning a plain char to a wider integer type is suspicious, did the programmer expect sign-extension or zero-extension?

  • astrange a day ago

    It's not implementation-defined in Java because there aren't any unsigned types.

    Personally I think explicit typecasts are even more suspicious, because introducing explicit semantics is worse than implicit semantics if the explicit ones are wrong.