Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [C] Twee shorts door elkaar delen ?  (gelezen 688 keer)

Offline Joshua822

  • Documentatieteam
  • Steunpunt: Nee
[C] Twee shorts door elkaar delen ?
« Gepost op: 2009/11/14, 20:23:42 »
Hallo allemaal.

Vandaag viel mij iets simpels op. Als ik twee variabelen van het type unsigned short wil delen door elkaar gaat er iets mis.

Neem nou het volgende programma :

#include <stdio.h>

int main ()
{
  unsigned short getal1 = 900, getal2;
  printf ( "Geef een nummer voor getal2 : " );
  scanf ( "%h", &getal2 );
  printf ( "%h", getal1 / getal2 );
  getchar ();
  return 0;
}

Dit werkt dus niet. Het werkt echter wel als we alles veranderen ( dus de definitie van de variabelen en de format specifiers ) om met integers te werken.

Dit is natuurlijk erg raar. Als ik dit programma uitvoer, en dan een getal invoer komt er geen output.

Weet iemand waarom ?

Alvast bedankt.

Offline Mossie

  • Lid
  • Steunpunt: Nee
Re: [C] Twee shorts door elkaar delen ?
« Reactie #1 Gepost op: 2009/11/15, 09:50:35 »
#include <stdio.h>

int main ()
{
  unsigned short getal1 = 900, getal2;
  printf ( "Geef een nummer voor getal2 : " );
  scanf ( "%hu", &getal2 );
  printf ( "%hu", getal1 / getal2 );
  getchar ();
  return 0;
}

Dit werkt wel. Het verschil zit hem in het inlezen en afdrukken van de variabelen. Jij gebruikt hier %h voor. Dit moet in dit geval %hu zijn (de h geeft de lengte aan (h = short, l = long) en de u geeft het type aan (u = unsigned, d = signed, en nog een aantal, zie man 3 printf).