2015-09-17 1 views
0

J'ai lu la description de strcmp il a dit "Teste les chaînes pour l'égalité retourne un nombre négatif si chaîne1 est inférieure à chaîne2, renvoie zéro si les deux chaînes sont égales, et renvoie un nombre positif est chaîne1 est supérieur à string2 "de http://www.cprogramming.com/fod/strcmp.html. Cependant, j'ai couru dans un programme qui me donne un nombre positif au lieu d'un nombre négatif. Quelqu'un peut-il expliquer pourquoi il est positif au lieu de sortie négative?Sortie strcmp avec une valeur positive

using namespace std; 

int f(int n) { 
if (n < 0) { 
    return -1; 
} else if (n == 0) { 
    return 0; 
} else { 
    return 1; 
} 
} 

int main(int argc, char* argv[]) { 
char a[10]; 
char b[10]; 
int n; 

strcpy(a, "4"); 
strcpy(b, "345"); 

n = strcmp(a, b); 
cout << f(n) << endl; 
} 
+0

Si le point de 'f()' juste pour confondre les choses? Quoi qu'il en soit, '" 4 "' est lexicographiquement supérieur à "345". – juanchopanza

+0

Oh veux juste le rendre plus simple – SpaceWalker

+0

Vraiment? Pourquoi ne pas simplement imprimer 'n'? – juanchopanza

Répondre

3

strcmp() compare les caractères, et non les valeurs numériques. "4" est supérieur à "345" lexicographiquement, d'où le résultat positif.

+0

Merci pour l'explication! – SpaceWalker