Che cosa significa il seguente frammento di codice (in C) stampare?
Domanda
Che cosa significa il seguente frammento di codice (in C) di stampa?
int a = 033;
printf("%d", a + 1);
Soluzione
033
è un ottale letterale intero e il suo valore è 8*3+3 = 27
. Le stampe di codice 28
.
Un numero intero letterale che inizia con un 0
è ottale. Se inizia a 0x
esso è esadecimale.
Tra l'altro, per l'amor di un esempio
int x = 08; //error
è un errore di compilazione poiché 8
non è una cifra ottale.
Altri suggerimenti
I rischierebbe una congettura e dire 28
selvaggio:) ??
28.
033 è un numero ottale in C perché è uno "0" e che mezzi il suo valore è 27 nel decimale.
Quindi, 27 + 1 = 28
Ecco uno spunto:
- 3 cifre con zero all'inizio è un ottale.
- un valore a 2 cifre con "0x" in principio è un esagono.
Prova a guardare questo esempio:
#include<stdio.h>
main()
{
int a = 033;
printf("\nin decimal: %d", a+1);
printf("\nin hex: %x", a+1);
printf("\nin octal: %o", a+1);
}
Questo si traduce in:
in decimal: 28
in hex: 1c
in octal: 34
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow