Avatar billede www.jesper Nybegynder
01. oktober 2002 - 14:54 Der er 20 kommentarer og
1 løsning

Hvilken type variabel

Hvad gør man hvis en long ikke er stor nok, til at indeholde et tal???
Avatar billede nak-m Nybegynder
01. oktober 2002 - 14:57 #1
hvor stort skal tallet kunne være?
Avatar billede www.jesper Nybegynder
01. oktober 2002 - 14:59 #2
10^10
Avatar billede jpk Nybegynder
01. oktober 2002 - 14:59 #3
Hvis du bruger VC++ compileren, kan du bruge typen __int64, der som navnet siger, er en 64bit type...
Avatar billede www.jesper Nybegynder
01. oktober 2002 - 15:01 #4
Jeg bruger dev-c++
Avatar billede jpk Nybegynder
01. oktober 2002 - 15:10 #5
Hvis den ikke understøtter en type der kan klare det, har du 2 muligheder:
1) Implementér en klasse der kan
2) Find en på nettet

Du kan evt. søge blandt tidligere svar, da det spørgsmål har været stillet flere gange før!
Avatar billede soreno Praktikant
01. oktober 2002 - 15:13 #6
brug evt en "long long" (som faktisk er det samme som __int64 - også i dev-cpp)
Avatar billede www.jesper Nybegynder
01. oktober 2002 - 16:10 #7
soreno, jeg har prøvet long long. Men så kommer får jeg følgende fejl:
C:\cpp\Tal\tal.cpp:37: integer constant out of range
Avatar billede nak-m Nybegynder
01. oktober 2002 - 16:24 #8
Avatar billede soreno Praktikant
01. oktober 2002 - 16:46 #10
www.jepser> prøv at poste linie ca. 30-40 stykker - så kan vi nemlig se i hvilken sammenhæng du får fejl :-)
Avatar billede nak-m Nybegynder
01. oktober 2002 - 16:48 #11
Avatar billede nak-m Nybegynder
01. oktober 2002 - 16:58 #12
soreno: det er vist bare fordi hans tal er for stort
Avatar billede soreno Praktikant
01. oktober 2002 - 17:04 #13
jooow, måske - men antagelser er roden til alt ondt :-)
Avatar billede nak-m Nybegynder
01. oktober 2002 - 17:10 #14
ja og ondskab er roden til alle antagelser :-)
Avatar billede www.jesper Nybegynder
01. oktober 2002 - 17:21 #15
soreno> tror altså det er mit tal der er for stort:
35: int main(int tal) {
36:    int lavvar;
37:    long hojeste = 10000000000;
38:      float point;
    ....
Tallene er ikke med i selve koden.

Jeg er i gang med at kigge på de link jeg har fået, håber der er noget der virker.
Avatar billede nak-m Nybegynder
01. oktober 2002 - 17:30 #16
et ciffer for meget :)
Avatar billede soreno Praktikant
01. oktober 2002 - 18:00 #17
du skal gøre compileren opmærksom på at det er et stort tal:

typedef unsigned long long int64;

int main(int argc, char **argv)
{
  int64 tal = 18446744073709551615LL;

  return 0;
}
Avatar billede nak-m Nybegynder
01. oktober 2002 - 18:24 #18
det dur skam
Avatar billede soreno Praktikant
02. oktober 2002 - 19:33 #19
jeg har lavet følgende eksempel, som viser et eks. på brug af en 64 bit variable (og skriver det ud):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  unsigned long long tal;
  char temp[20];

  while(true)
  {
      //læser et internt 64 bit register.
      //tallet tælles én op for hver clockcykle
      asm(".byte 0x0f, 0x31" : "=A" (tal));

      _ui64toa(tal, temp, 10);
      printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b[%20s]", temp);
      _sleep(100);
  }

  return 0;
}
Avatar billede nak-m Nybegynder
03. oktober 2002 - 14:20 #20
soreno: smart! (specielt med det der assembly :o)
Avatar billede reficul Nybegynder
12. oktober 2002 - 15:42 #21
Hvis du bruger linux/unix så brug en variabel af typen "unsigned long long". I Windows kan du bruge en ULONGLONG eller en LARGE_INTEGER
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