Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

Java, типы данных

#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.

Комментариев нет:

Отправить комментарий