2010-08-01 34 views
1

Je déclare un tableau en utilisant les nouvellesC++: hex Obtenir de façon inattendue lorsque tableau l'impression

int *a = NULL; 
a = new int[10]; 

a[0] = 23; 
a[1] = 43; 
a[2] = 45; 
a[3] = 76; 
a[4] = 34; 
a[5] = 85; 
a[6] = 34; 
a[7] = 97; 
a[8] = 45; 
a[9] = 22; 

PrintElements(a, 10); 

void PrintElements(int * array, int size){ 
    for (int i=0; i<size; i++) { 
     cout << endl << array[i]; 
    } 
} 

Maintenant, quand j'imprime les valeurs que je suis obtenir ces valeurs

 
17 
2b 
2d 
4c 
22 
55 
22 
61 
2d 
16 

Quelqu'un peut me dire ce que suis-je mal faire ...? D'autre part, lorsque je n'utilise pas le nouveau tableau & initialiser sans tout cela fonctionne très bien.

+0

Non reproductible. – kennytm

+1

Je pense que quelqu'un devrait éditer le titre pour refléter la vraie nature du problème. C'est un peu trompeur et serait probablement inutile pour quelqu'un Google pour les tableaux dynamiques en C++. (en fait c'est le 3ème hit sur Google en ce moment) – Tyler

Répondre

4

Vous avez peut-être écrit un std :: hex sur le cout à un moment donné; cela restera en vigueur jusqu'à ce qu'il soit annulé.

+0

oui merci c'était le problème thumbs up! –

2

Cela n'a rien à voir avec l'allocation statique ou dynamique de la matrice.

Les nombres sont imprimés en tant que valeurs hexadécimales et non en valeurs décimales.

1

17 2b 2d 4c 22 55 22 61 2d 16

Ce sont évidemment des nombres hexadécimaux. Si vous les imprimez sous forme de nombres décimaux, vous obtenez 23, 43, etc. IOW, exactement les nombres que vous avez mis dans le tableau. Une partie de votre code exécuté avant votre PrintElements() change apparemment la mise en forme pour afficher des nombres hexadécimaux.

2

Essayez:

std::cout << dec << //all your stuff here 

Il est toujours réglé en mode hexadécimal.