Tips och Trick i C: Skillnad mellan sidversioner
Anders (diskussion | bidrag) Created page with "{{ofärdig}} == Tilldelning == Problem: I C är syntaxen för tilldelning, =, och för jämförelse, ==, lika nog för att ett litet misstag skall direkt orsaka rejäla prob..." |
Anders (diskussion | bidrag) |
||
(7 mellanliggande sidversioner av samma användare visas inte) | |||
Rad 2: | Rad 2: | ||
== Tilldelning == | == Tilldelning == | ||
Problem: I C är syntaxen för tilldelning, =, och för jämförelse, ==, lika nog för att ett litet misstag skall direkt orsaka rejäla problem. Ett exempel är jämförelser inuti if()-satser som kan orsaka smärre katastrofer om man slarvar. | Problem: I C är syntaxen för tilldelning, =, och för jämförelse, ==, lika nog för att ett litet misstag skall direkt orsaka rejäla problem. Ett exempel är jämförelser inuti if()-satser som kan orsaka smärre katastrofer om man slarvar. | ||
Rad 13: | Rad 12: | ||
if(5 = a) | if(5 = a) | ||
Skriver man på ovanstående sätt så kommer man direkt få ett kompilatorfel vilket gör att hela problemet kan undvikas. | Skriver man på ovanstående sätt så kommer man direkt få ett kompilatorfel vilket gör att hela problemet kan undvikas. Anledningen är naturligtvis att variabeln a:s innehåll ej kan tilldelas en konstant som 5. | ||
== Antal element i en array == | |||
C saknar denna funktion men en del implementerar den själv med hjälp av sizeof-funktionen. Det kan vara fullständigt livsfarligt att göra, ta en titt på följande kod där ''array'' och ''array_p'' skall vara helt ekvivalenta men ger helt olika svar. | |||
<pre> | |||
int main(int argc, char *argv[]) | |||
{ | |||
int array[100]; | |||
int *array_p; | |||
array_p = array; | |||
printf("sizeof array: %d\n", sizeof array); | |||
printf("sizeof array_p: %d\n", sizeof array_p); | |||
return 0; | |||
} | |||
</pre> | |||
Kör du koden kommer utskriften att vara: | |||
<pre> | |||
sizeof array: 400 | |||
sizeof array_p: 4 | |||
</pre> | |||
[[category:Programmering]] | |||
[[category:Algoritmer]] |
Nuvarande version från 24 februari 2013 kl. 14.27
Denna sida är under konstruktion och ej färdig ännu och därför kan väsentliga detaljer fortfarande saknas. |
Tilldelning
Problem: I C är syntaxen för tilldelning, =, och för jämförelse, ==, lika nog för att ett litet misstag skall direkt orsaka rejäla problem. Ett exempel är jämförelser inuti if()-satser som kan orsaka smärre katastrofer om man slarvar.
Ponera att vi vill jämföra en variabel a med värdet 5 för att se om variabeln har samma eller ett annat värde. Vi slarvar dock och råkar i stället skriva:
if(a = 5)
Om variabeln a är av sådant slag att jämförelsen fungerar så fungerar även tilldelningen. I ovanstående tilldelas a värdet 5 och eftersom det är skilt från noll innebär det att satsen alltid kommer vara sann.
if(5 = a)
Skriver man på ovanstående sätt så kommer man direkt få ett kompilatorfel vilket gör att hela problemet kan undvikas. Anledningen är naturligtvis att variabeln a:s innehåll ej kan tilldelas en konstant som 5.
Antal element i en array
C saknar denna funktion men en del implementerar den själv med hjälp av sizeof-funktionen. Det kan vara fullständigt livsfarligt att göra, ta en titt på följande kod där array och array_p skall vara helt ekvivalenta men ger helt olika svar.
int main(int argc, char *argv[]) { int array[100]; int *array_p; array_p = array; printf("sizeof array: %d\n", sizeof array); printf("sizeof array_p: %d\n", sizeof array_p); return 0; }
Kör du koden kommer utskriften att vara:
sizeof array: 400 sizeof array_p: 4