Avatar billede mollevp Nybegynder
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
Avatar billede mollevp Nybegynder
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..
Avatar billede jakoba Nybegynder
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
Avatar billede mollevp Nybegynder
22. januar 2006 - 15:55 #3
Mange tak, det virkede..
Avatar billede mollevp Nybegynder
22. januar 2006 - 15:56 #4
smid et svar
Avatar billede jakoba Nybegynder
22. januar 2006 - 16:19 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester