Domanda

Che cosa significa il seguente frammento di codice (in C) di stampa?

int a = 033;
printf("%d", a + 1);
È stato utile?

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
scroll top