Қарапайым түрлерге қарапайым түрлерге баруға тырысамыз

Мүмкін бұл бір жерден сұралған, бірақ оны таба алмадым. Бұл кодекс не үшін 1 құрастырады және басып шығарады?

long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
28
Бұл бастапқы постта түсіндірілген vanillajava.blogspot.com/2011/10/java -plus.html ;)
қосылды автор Peter Lawrey, көзі
I күлкілі деп ойлайды; Менің ойымша, бұл біреуге қарайтын болады деп ойлаймын және тіпті ол заңды Java деп ойлаймын.
қосылды автор Dave Newton, көзі
@PrinceJohnWesley: Жақсы, бұл қызық көрінеді, солай емес пе? Жауап қарапайым болса да, мен мәселені қойғаннан кейін бірден түсіндік.
қосылды автор Denis Tulskiy, көзі
мұнда қандай қызық?
қосылды автор Prince John Wesley, көзі
Ұзын j = + - + - - - + - + - + - + - +1;//бұл заңды. Себебі ++ немесе - болмайды.
қосылды автор david van brink, көзі

3 жауаптар

Бұл келесідей талдаудан өтеді:

long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) );

онда + және - операторларының барлығы + немесе - .

Бұл жағдайда 1 екі есе қайтарылады, сондықтан ол 1 ретінде шығарылады.

42
қосылды

«+» Және «-» екеуі де бірыңғай операторлар болып табылады, сондай-ақ, осы бірлестіктердің операндаларына жұмыс жасайды. Қалғандары - математика.

5
қосылды

Unary операторлары және құю :)

+1 заңды болып табылады

(байт) + 1 +1 байтқа ауысады.

Күлкі! Маған ойланыңыз.

5
қосылды