ho incontrato la seguente riga di sorprendente:Java int + = doppio sintassi sorpresa
int x = 7;
x += 0.5;
è sintassi apparentemente legale! Dopo l'aggiunta, x è ancora 7, quindi il double viene lanciato su un int e arrotondato a 0, ma ciò avviene senza alcun cast esplicito nel codice. Qualcun altro è sorpreso da questo? Qual è la logica qui?
modifica per chiarire la mia domanda: qualcuno può dare una buona ragione per questa decisione? Mi sembra una decisione terribile richiedere un casting esplicito in qualsiasi altro posto, ma avere questo punto nella lingua in cui si eliminano dati in modo silenzioso. Mi sto perdendo qualcosa?
Interessante. Sono sicuro che la [JLS] (http://docs.oracle.com/javase/specs/jls/se7/html/index.html) risolve questo problema. Hai dato un'occhiata per vedere cosa dice? –
@Hovercraft: JLS fornisce le specifiche, ma non la giustificazione per la decisione, che è ciò che sto chiedendo. –