Avatar billede poet Nybegynder
08. august 2000 - 20:22 Der er 6 kommentarer og
4 løsninger

byte a; ??

Hejsa
Man kan vist godt sige, at jeg er en begynder i C/C++, og derfor tyer jeg nu til jer i dette spørgsmål:
Jeg kunne godt tænke mig en variabel af typen byte; men men men, det virker ikke, bare at deklarere den som \"byte a;\".
Kan man gøre det på en anden måde? Gerne en simpel og let overskuelig måde - hvis man da overhovedet kan gøre det.
Jeg har kigget mig lidt omkring, og jeg kan kun finde datatyperne int(eger), float og char nævnt, er det de eneste, man kan bruge i C/C++?
Jeg bruger gcc på en standard Redhat 6.0 (med standard mener jeg, at det blev installeret automatisk, og at jeg ikke aner noget om, hvor det ligger, hvordan det er sat op, eller i det hele taget hvordan det virker...)

Jeg har siddet og moret mig lidt med http://www.howstuffworks.com \'s tutor om C, hvis I kan anbefale andre øvelser, ting man skal vide osv, så er jeg da interesseret i at høre om det.

Med venlig hilsen
Poet
Avatar billede erikjacobsen Ekspert
08. august 2000 - 20:36 #1
Jeg mener du kan bruge en
  unsigned char a;
i C. Den vill essentielt virke som en byte.
Avatar billede jpk Nybegynder
08. august 2000 - 20:43 #2
base-typerne i C++ er de nedenstående. Du har ret i at man ikke umiddelbart kan erklære en byte som \"byte b;\", hvorfor ved jeg ikke!!!
En byte er blot 8 bit (som en char), så du kan selv definere den således:
\"typedef unsigned char    BYTE;\"


boolean          unsigned 8-bit data item
byte            - (not applicable) 8-bit data item
char            unsigned 8-bit unsigned data item
double          - 64-bit floating-point number
float            - 32-bit floating-point number
handle_t        - Primitive handle type
hyper            signed 64-bit signed integer
int              signed 32-bit signed integer
long            signed 32-bit signed integer
short            signed 16-bit signed integer
small            signed 8-bit signed integer
void *          - 32-bit context handle pointer type
wchar_t          unsigned 16-bit unsigned data item

Hvis du er begynder i C++, vil du nok mest anvende int, long, float, double, char og bool.

Jeg har hørt flere begyndere rose en bog om C++, af Kris Jamsa, jeg kan bare ikke huske navnet på den...
Avatar billede rm Nybegynder
08. august 2000 - 20:44 #3
der er ingen type der heder byte.

jeg tillader mig at citere dit link:

\"An int is a 4-byte integer value. A float is a 4-byte floating point value. A char is a 1-byte single character (like \'a\' or \'3\'). A string is declared as an array of characters.\"

så du kan (nok) bruge en char med mindre du skal lave et bytefelt (eller hvordan man nu staver til det ;o)
Avatar billede bjk Nybegynder
08. august 2000 - 20:57 #4
Der findes ikke ikke nogen byte type, men en char er typisk en byte (Specifikationen siger noget med at den mindst en byte og stor nok til at holde et tegn af maskinens karakter-sæt, d.v.s. for langt de fleste systemer er det en byte. Under Windows er der lavet en typedef for BYTE i standard-headerne:

typedef unsigned char      BYTE;

Men i selve c/c++ sproget er der altså ikke nogen der hedder en byte.
Avatar billede psyco Nybegynder
08. august 2000 - 21:35 #5
jpk>> Bogen hedder på dansk bare C++  (engelsk original titel var Rescued by C++).
Den er udgivet af forlaget IDG bøger i \'96.
Avatar billede poet Nybegynder
10. august 2000 - 16:06 #6
Mange tak for jeres svar. Alt det havde jeg jo slet ikke tænkt på, man kan jo bare
unsigned char a;
printf(\"%d\", a);
og så lege med a, som om den var et tal -- at jeg dog ikke selv tænkte på det....
Men inden jeg accepterer jeres fine svar, så har jeg lige en ekstra lille ting:
Jeg kan ikke huske, hvor jeg har fået det fra, men et eller andet sted mener jeg, at have læst, at hvis man gør følgende:
unsigned char a;
printf(\"%d\", a);
Så vil a indeholde den værdi, som blev efterladt på den tildelte hukkommelsesadresse, af det program, der sidst brugte pågældende del af hukkommelsen. Altså i princippet en tilfældig værdi.
Øhhm, i windows giver ovenstående konsekvent 0, under Linux 8 (altså bitmønster 1000 - er der en sammenhæng?). Er der noget der jeg har fået forkert fat i? Og hvis ja, kunne I så kort forklare mig, hvordan jeg får et tilfældigt tal i C og/eller C++
mv
Poet/Rasmus
Avatar billede poet Nybegynder
10. august 2000 - 16:07 #7
Og til jpk:
Din liste ligner noget du har kopieret et sted fra?
Har du et link eller noget?
Avatar billede jpk Nybegynder
10. august 2000 - 16:53 #8
Du har ganske ret, det er kopieret fra MSDN Library, Microsofts dokumentation til Visual C++. Jeg har det CD, men det kan (i hvert fald delvist) findes på MS\'s hjemmeside.

Hvad angår tilfældige* tal, så prøv det her:

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

int main()
{
  int i;

  /* Seed the random-number generator with current time so that
    * the numbers will be different every time we run.
    */
  srand( (unsigned)time( NULL ) );

  /* Display 10 numbers. */
  for( i = 0;  i < 10;i++ )
      printf( \"  %6d\\n\", rand() );

  return 0;
}

*Vær dog opmærksom på at det naturligvis kun er pseudo-tilfældige tal der genereres (det er umuligt at generere tilfældige tal!!!), dvs. tallet bliver beregnes udfra PC\'ens timer, og derfor skal funktionen også \"sås\" før den kan bruges (srand(.))

Jacob
Avatar billede jpk Nybegynder
10. august 2000 - 17:02 #9
Hvis du ønsker \"tilfældige tal i bestemte talområder kan du gøre således:

// 10 tilfældige tal mellem 0 og 100
for(i=0; i<10; ++i)
  printf(\"  %6d\\n\", rand()%101);

// 10 tilfældige tal mellem 1000 og 2000
for(i=0; i<10; ++i)
  printf(\"  %6d\\n\", (rand()%1001)+1000);
Avatar billede poet Nybegynder
14. august 2000 - 16:52 #10
Okay, efter en lille weekend, er jeg tilbage igen.
Tak for jeres svar og kommentarer.
Poet/Rasmus
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