Tips och Trick i C: Skillnad mellan sidversioner

Från Täpp-Anders
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
Rad 14: Rad 14:
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.
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 du kan implementera den själv enkelt genom följande kod:
<pre>
{
  my_type array[100];
  for (i = 0; i < (sizeof array / sizeof *array); i++)
  {
      /* ... */
  }
}
</pre>
[[category:Programmering]]
[[category:Programmering]]
[[category:Algoritmer]]
[[category:Algoritmer]]

Versionen från 24 februari 2013 kl. 14.19

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 du kan implementera den själv enkelt genom följande kod:

{
   my_type array[100];

   for (i = 0; i < (sizeof array / sizeof *array); i++)
   {
      /* ... */
   }
}