Erään metodini lopussa on tällaista koodia:
long Q = 0;
Q = (long)(v0 | ((long)v1)
long Q = 0;
Q = (long)(v0 | ((long)v1)
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
Tämä ainakin toimii ok:
Q = ((long)v1
Q = (long)(v0 | ((long)v1)
Tulee vähän sekava selitys ja vastaus. Lyhyesti kuitenkin moka on se, ettet ota huomioon sitä, mitä int => long muunnoksessa tapahtuu, ja sitä koska kyseinen muunnos tapahtuu, (eli se tapahtuu silloin kun toinen argumentti on long tyyppiä).
Sekava selitys:
v0:n voi tuossa viestisi lauseessa valita siten, ettei v1:llä ole vaikutusta. Esimerkiksi jos v0 on negatiivinen, ovat sen sisältämän luvun bitit 32-63 tällöin ykkösiä int => long muunnoksen jälkeen (koska -1 => -1L, -2 => -2L, jne.). Tästä seuraa se, että kyseisiä bittejä (32-63) päälle asettava OR -operaatio (eli "| ((long)v1)