Tallet 010, skrevet som en konstant i et C kildeprogram betegner et tal i det oktale talsystem.
Det tilsvarende decimale tal er 8. Tilsvarende svarer det oktale tal 011 til 9, og 012 til 10 i det sædvanlige decimale talsystem.
Tallet 0x10 er et hexadecimalt tal når det optræder i et C kildeprogram. Tallet svarer til det decimale tal 16. Hvis vi indtaster 010, 011 og 012 som input til ovenstående program får vi resultatet 33.
Samme input opnås med 10, 11 og 12. Når vi indlæser heltal med konverteringsspecifikationen %d i scanf,
kan vi ikke umiddelbart angive oktale tal. Ovenstående version viser at konverteringsspecifikationen %o i scanf fortolker input som oktale tal.
Det er ligegyldigt om der indlæses 010 eller 10. Resultatet svarer i begge tilfælde til det decimale tal 8. Hvis der indlæses 10, 11 og 12 som input til ovenstående program udskrives resultatet 33. Internt adderes de tre decimale heltal 8, 9 og 10. Summen af disse er 27 som svarer til det
oktale tal 33. Regn selv efter!#include <stdio.h>
int main(void) {
int sum1 = 10 + 11 + 12,
sum2 = 010 + 011 + 012,
sum3 = 0x10 + 0x11 + 0x12;
printf("sum1 = %d\n", sum1);
printf("sum2 = %d\n", sum2);
printf("sum3 = %d\n", sum3);
return 0;
}
#include <stdio.h>
int main(void) {
int x, y, z, sum;
printf("Enter three integers: ");
scanf("%d %d %d", &x, &y, &z);
sum = x + y + z;
printf("sum = %d\n", sum);
return 0;
}
#include <stdio.h>
int main(void) {
int x, y, z, sum;
printf("Enter three integers: ");
scanf("%o %o %o", &x, &y, &z);
sum = x + y + z;
printf("sum = %d\n", sum);
return 0;
}
#include <stdio.h>
int main(void) {
int x, y, z, sum;
printf("Enter three integers: ");
scanf("%o %o %o", &x, &y, &z);
sum = x + y + z;
printf("sum = %o\n", sum);
return 0;
}