#java
int a = 'a'; int b = ('a' + 'b'); int объявляется как тип данных char, что означают эти строчки?
Ответы
Ответ 1
Смотрите. У вас переменные объявлены как int, а вот значение им присваивается с помощью констант типа char. В Java, в отличие от C++, char — 16-битный числовой беззнаковый тип* (в отличие от 8-битного знакового byte). При сложении char'ов, однако, происходит integer promotion: char'ы преобразуются к 32-битному типу int, и складываются. При этом, очевидно, переполнения не будет. Результат сложения есть тоже int, он-то и присваивается переменной b. *хотя его константы (литералы) задаются символами вида '\u1f2d', а не числамиОтвет 2
На самом деле char - целочисленный тип, аналог byte иногда беззнаковый. Его можно неявно привести в int (по коду символа) и сложить. Код не очень красивый и смущает тех кто пришёл из С++. UPD. Спасибо за уточнения, был не совсем прав, смотри ответ VladD.
Комментариев нет:
Отправить комментарий