22. januar 2006 - 12:36
Der er
4 kommentarer og 1 løsning
Problem med data type
Hej alle jeg har et virkelige træls problem. Jeg har følgende: public class MidletLog extends MIDlet { public static final long foo1 = 0x80000000; public static final long foo2 = Long.MAX_VALUE; public void startApp() { System.out.println("foo1 = "+foo1); System.out.println("foo2 = "+foo2); } ........... destroy og pause } Det er J2ME, hvis det har nogen betydning. Problemet er println giver: foo1 = -2147483648 foo2 = 9223372036854775807 foo1 burde ikke have et minus, det ville burde kun ske hvis jeg bruge en int da long skulle kunne indeholde noget ala 2^63-1? Jeg forstår det virkligt ikke.. Alle forslag er velkommene.. mvh Morten
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
22. januar 2006 - 12:45
#1
Hej, Prøvede lige følgende: public class MidletLog extends MIDlet { public static final long foo1 = 1; public static final long foo2 = Long.MAX_VALUE; public void startApp() { System.out.println("foo1 = "+(foo1<<31)); System.out.println("foo2 = "+foo2); } ........... destroy og pause } Som giver det korrekte nemlig: foo1 = 2147483648 foo2 = 9223372036854775807 Der må alså ske en konvertering til int et eller andet sted.. synes bare det virker for mærkeligt.. Håber der er nogle der har et svar på det..
22. januar 2006 - 12:47
#2
idet du skriver din konstant bør du fortælle at det er en long, ellers bliver den læst som en int og så konverteret til long bagefter. public static final long foo1 = 0x80000000L; //tilføjet L
22. januar 2006 - 15:55
#3
Mange tak, det virkede..
22. januar 2006 - 15:56
#4
smid et svar
22. januar 2006 - 16:19
#5
ok
Kurser inden for grundlæggende programmering