Gå til innhold

Innføring i programmeringsspråket C


Anbefalte innlegg

Bra guide, Jaffe. :)

Menneh, det stemmer da ikke helt at man må lære en del nye ting hvis man går fra C++ til C -- tvert imot.

8666290[/snapback]

 

Jeg kan godt skrive om på det. Tenkte i hovedsak på det å bruke input/output-funksjoner i C, som er forskjellig fra C++, og kanskje også tenkemåten (ikke-OO).

Lenke til kommentar
Videoannonse
Annonse
long er det stikk motsatte av short. Den lager, for noen datatyper, en versjon av datatypen som kan lagre enda større verdier. I realiteten er det bare double som har en long-versjon som faktisk er større enn den vanlige datatypen double.
Prøv long long int.

 

Noen spørsmål:

Hvordan i all verden kan en long double bli 12 byte når FPUen på x86 kun har support for 10 byte? sizeof() gir 12, men asmkoden bruker fldt, t = 10 eller hva? Blir de to siste bytene bare liggende og råtne?

 

Og: Hvis /* brukes som kommentar, hva gjør du hvis du vil dele på en peker?

Lenke til kommentar
long er det stikk motsatte av short. Den lager, for noen datatyper, en versjon av datatypen som kan lagre enda større verdier. I realiteten er det bare double som har en long-versjon som faktisk er større enn den vanlige datatypen double.
Prøv long long int.

 

Noen spørsmål:

Hvordan i all verden kan en long double bli 12 byte når FPUen på x86 kun har support for 10 byte? sizeof() gir 12, men asmkoden bruker fldt, t = 10 eller hva? Blir de to siste bytene bare liggende og råtne?

 

Og: Hvis /* brukes som kommentar, hva gjør du hvis du vil dele på en peker?

8683400[/snapback]

 

FPU-en laster vel 10 av de 12 bytene da, antageligvis, eller kanskje tallet blir operert på i flere omganger. Jeg vet i grunn ingenting om FPU-en.

 

Hva mener du med kommentarene? Alt mellom /* og */ er kommentarer.

Lenke til kommentar
F. eks skal dette være lovlig hvis b er en peker:

a = * b;

 

Hva hvis man vil ha 2000 / * b? Da blir det jo en kommentar?

8683929[/snapback]

 

Det er kun /* (uten mellomrom mellom / og *) som markerer en kommentar, ikke / * eller lignende. Så i ditt eksempel kan man da skrive akkurat slik.

Endret av Jaffe
Lenke til kommentar

Jeg testa det nettopp. Fungerte helt fint med GCC i alle fall.

 

EDIT: Nå skal det sies at det i C++ er lagt til en annen type kommentarer som er ment å brukes på samme linje som et uttrykk:

 

int a = 9; // vi setter a til å være 9

 

Var usikker på om jeg burde ta det med i en guide til C, da det strengt tatt er noe som gjelder C++.

Endret av Jaffe
Lenke til kommentar

hvis du vil ha mindre leselig kode og ikke ha mellomrom kan du prøve å sett \ foran /* dvs: 2000\/*b.. er litt usikker på hvordan det funker med operatorer men dere kan alltids prøve (har ikke noen kompilator installert akkurat nå).

Lenke til kommentar

int main()

er ikke gyldig C99 / ANSI-C. Korrekt deklarasjon er :

int main(void)

Første vil fortelle main at den skal forvente et uvisst antall parametere.

Det vil sjelden / aldri ha noe å si, men det er fortsatt greit å lære bort korrekt C. I C89 derimot (obsolete ;) ) er int main() gyldig.

 

Edit: Absolutt et bra tiltak :) Føler bare at det er viktig å lære bort det som er korrekt, ellers risikerer man å ende opp med veldig uportabel kode (void main() f.eks. vil ikke kjøre korrekt på RISC OS).

 

Edit 2: Er forøvrig få / ingen bøker som lærer dette bort. Trist egentlig, men samtidig er det hauger av bøker som lærer bort void main(void).

Endret av jurg
Lenke til kommentar
int main()

er ikke gyldig C99 / ANSI-C. Korrekt deklarasjon er :

int main(void)

Første vil fortelle main at den skal forvente et uvisst antall parametere.

Det vil sjelden / aldri ha noe å si, men det er fortsatt greit å lære bort korrekt C. I C89 derimot (obsolete ;) ) er int main() gyldig.

 

Edit: Absolutt et bra tiltak :) Føler bare at det er viktig å lære bort det som er korrekt, ellers risikerer man å ende opp med veldig uportabel kode (void main() f.eks. vil ikke kjøre korrekt på RISC OS).

 

Edit 2: Er forøvrig få / ingen bøker som lærer dette bort. Trist egentlig, men samtidig er det hauger av bøker som lærer bort void main(void).

8731784[/snapback]

 

Dette var jeg ikke klar over! Har ikke sett så mye kode hvor main er definert som int main(void). Skal fikse koden min slik at det blir rett.

Lenke til kommentar
Ok nå har jeg gått i mellom denne guiden og har skjønt ca 90% av den, noen ideer for hvordan gå videre?

8744498[/snapback]

 

Lær deg resten av standardbiblioteket, kjøp deg gjerne en bok (uansett god å ha som referanseverk) og følg tutorials på mer avanserte ting rundt omkring på nettet. Beste måten å lære et nytt språk på (syns jeg) er å gi seg ut på et prosjekt som krever en større beherskelse av språket enn den du har nå.

 

Edit: Jaffe: Kanskje ta med litt om funksjoner? Korrekt bruk av header-filer samt deklarering / definering. Det burde i det minste være et av de neste skrittene du tar for deg dersom du skal legge ut mer :)

Endret av jurg
Lenke til kommentar
Ok nå har jeg gått i mellom denne guiden og har skjønt ca 90% av den, noen ideer for hvordan gå videre?

8744498[/snapback]

 

Lær deg resten av standardbiblioteket, kjøp deg gjerne en bok (uansett god å ha som referanseverk) og følg tutorials på mer avanserte ting rundt omkring på nettet. Beste måten å lære et nytt språk på (syns jeg) er å gi seg ut på et prosjekt som krever en større beherskelse av språket enn den du har nå.

 

Edit: Jaffe: Kanskje ta med litt om funksjoner? Korrekt bruk av header-filer samt deklarering / definering. Det burde i det minste være et av de neste skrittene du tar for deg dersom du skal legge ut mer :)

8744586[/snapback]

 

Ja, er det jeg tenker på å gjøre nå. I tillegg har jeg tenkt å skrive om pekere. Har jo skrevet grunnleggende om funksjoner da.

Lenke til kommentar
  • 2 uker senere...
Jeg har nå lagt ut guiden på wikibooks i stedet: http://no.wikibooks.org/wiki/C

8821097[/snapback]

 

Listen din over datatyper er ikke komplett; C99 innførte bl.a. long long int / float / double.

Ta også med at kompileren de bruker MÅ støtte C99 for å kunne bruke koden du har der.

8822764[/snapback]

 

long long int ja, men er da ingenting som heter long long float eller long long double?

Lenke til kommentar
Jeg har nå lagt ut guiden på wikibooks i stedet: http://no.wikibooks.org/wiki/C

8821097[/snapback]

 

Listen din over datatyper er ikke komplett; C99 innførte bl.a. long long int / float / double.

Ta også med at kompileren de bruker MÅ støtte C99 for å kunne bruke koden du har der.

8822764[/snapback]

 

long long int ja, men er da ingenting som heter long long float eller long long double?

8822993[/snapback]

 

Hm, pokker mulig, aldri brukt noe annet enn long long int, men var sikker på at long long float / double fantes også :p

Lenke til kommentar
  • 9 måneder senere...
hehe .. fint det med c++ assa,, men jeg anbefaler blender assa !!! :mrgreen:

 

C++ har ingenting med denne tråden å gjøre, og blender er et 3D-modelleringsprogram, ikke et programmeringsspråk. Enten er du full eller 12 år og tilbakestående. Hvilken av dem?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...