2013-09-19 2 views
1

кажется, чтоПочему нет! (не) перегружен?

! 

используется для логических операндов

и

~ 

используется для целочисленных типов, чтобы сделать btitwise отрицанием.

Почему бы не просто перегрузить ! для работы с целыми типами?

Я предполагаю, что есть более глубокая причина, чем потому, что «спецификация говорит так»

Например & перегружен обрабатывать как целочисленные типы и логические типы без проблем.

+1

Я не думаю, что видел '!', Используемый для поразрядного отрицания на любом языке, может быть неправильным? –

+0

@Joni - целочисленные типы также могут представлять собой ряд бит, я полагаю, вы тоже не знакомы с поразрядным '&'? –

+3

Вероятно, это именно то, что сказал Кевин: на других языках '!' Может иметь различное значение для целых чисел (например, когда логические значения также могут быть представлены как целые числа), и, таким образом, '~' используется для побитового отрицания - и почему изменяется синтаксис, который разработчики уже используются? – Thomas

ответ

6

Вероятная причина (читай чистое предположение).

Java появился после c и C++.

В c/C++! на целые числа имеет значение, которое не является побитовым отрицанием.

Разработчики Java не захотели сделать это трудным для людей, переходящих из c/C++ в Java.

+0

+1 Мое предположение было бы таким же. Java явно была нацелена на разработчиков C/C++. –

+0

Да, C/C++: 'if (! N) {/ * n == 0 * /}'. –

Смежные вопросы