Tja, dat stamt nog uit het stenen tijdperk, toen C net was uitgevonden.
Om getallen te printen werd de funktie printf() uitgevonden. Die krijgt een variabel aantal parameters mee, maar de eerste is een string. En binnen die string staan dan format codes die altijd met een procent beginnen.
Dus dan krijg je bijvoorbeeld
code:
printf ("Het getal is %d", x);
Dan krijg je "Het getal is 100" op het scherm, dus de %d wordt vervangen door de waarde van x.
Als je het getal in hex wilt zien dan gebruik je %X ipv %d
code:
printf ("Het getal is %X", x);
Dat geeft dan "Het getal = AA" als x gelijk is aan 170.
Maar meestal wil je ook laten zien dat het hex is, dus dan zet je er 0x voor in de string. Dat betekent niks voor de compiler, dus dat wordt gewoon afgeprint:
code:
printf ("Het getal is 0x%X", x);
Dat geeft dan "Het getal = 0xAA" als x gelijk is aan 170.
Nu zijn er inmiddels allerlei varianten van die prinf(). De belangrijkste is sprintf() Die doet dezelfde formatting, maar schrijft het resultaat in een textbuffer :
code:
char TextBuffer[100];
sprintf (TextBuffer, "Het getal is 0x%X", x);
En zo zijn er nog allerlei variaties op de format specifier.
Als je dat wilt gebruiken dan heb je een extra header nodig:
code:
#include <stdio.h>
Maar deze funktie is niet meer zo populair voor micro'tjes want die heeft nogal flink wat code nodig, en is gevaarlijk als de tekst te lang wordt voor de buffer, of als je fouten maakt met de format specifier.