2011-01-18 5 views
4

Possible en double:
Octal number literals: when? why? ever?Que signifie un 0 supplémentaire devant une valeur int?

Bonjour à tous,

Inspirer d'un morceau obfuscation de code, j'ai une petite question concernant d'attribuer une valeur à un nombre entier:

#include <iostream> 
#include <cstdio> 

int main() { 
    int i = 0101; 
    std::cout << i << "\n"; 
} 

Et le La production était de 65, et je ne sais pas d'où provenait 65? Une idée?

Merci,
Chan

+4

Ceci est un double de beaucoup d'autres questions similaires, mais ils sont vraiment difficiles à rechercher. En voici un à la place, qui pourrait être votre * prochaine * question: [Littéraux numériques octaux: quand? Pourquoi? jamais?] (http://stackoverflow.com/questions/44569/octal-number-literals-when-why-ever) –

Répondre

10

Il spécifie une octal (base 8) Numéro: 0101 == 1 * (8 * 8) + 1 == 65.

+0

@: Lambert: Merci beaucoup;)! C'était vraiment intéressant. – Chan

+0

@Chan: De rien. :) Je l'ai moi-même appris il y a quelques heures, en apprenant la grammaire de la langue D! – Mehrdad

+0

lol^_ ^! J'ai été surpris en entendant cela. – Chan

1

Lambert a déjà expliqué que. Alors laissez-moi vous dire ce que vous pouvez faire d'autre.

Vous pouvez écrire entier hexadécimal:

int main() { 
    int i = 0x101; //0x specifies this (i.e 101) is hexadecimal integer 
    std::cout << i << "\n"; //prints 257 (1 * 16 * 16 + 1) 
} 

Sortie:

257 
Questions connexes