2010-01-03 5 views
3

Comment puis-je concaténer deux nombres comme 7 et 6 pour obtenir le nombre 76, ou 3 et 3 de sorte que le résultat soit 33, dans l'objectif-c?Comment concaténer deux nombres dans Objective-C

+1

Cela ne veut pas ajouter, c'est concaténation. –

+0

Modifier pour refléter l'intention originale. –

Répondre

15

Il n'y a pas construit en symbole pour concaténer nombres. Cependant, vous pouvez accomplir cela en faisant:

int first; /* Assuming this is initialized to the first number */ 
int second; /* Assuming this is initalized to the second number */ 
int myVal = [[NSString stringWithFormat:@"%d%d",first, second] intValue]; 
+0

L'analyse syntaxique des chaînes de format est coûteuse. Utilisez -stringByAppendingString: quand vous le pouvez. – NSResponder

+2

Cela nécessiterait deux allocations de mémoire distinctes, ce qui pourrait être plus coûteux que l'analyse de cette chaîne d'expression (simple). En tout cas, je ne pense pas que la performance de l'une ou l'autre méthode sera un énorme problème. – Mike

+1

D'accord avec Mike. La complexité de la configuration de deux chaînes à partir d'entiers et de leur concaténation est peu susceptible d'être meilleure que le + stringWithFormat pour ce problème. Il faudrait certainement que le profilage le sache avec certitude, car l'autre méthode courante, utilisant NSNumber -stringValue, pourrait être encore plus coûteuse. Même si vous aviez déjà les chaînes, je serais très curieux du coût réel de + stringWithFormat versus -stringByAppendingString, surtout dans le cas de plus de 2 éléments, et seul le profilage nous le dirait. Le cacao ne fait aucune promesse d'efficacité dans les deux cas. –

5

FirstNum * 10 + secondNum :-)

+0

Cela ne fonctionnera que pour les nombres à un chiffre. – Mike

1

Si vous voulez deux nombres x et y ajouter à xy, vous pouvez faire

10 * x + y.

Pour 7 et 6

7 * 10 + 6 = 76

+0

Cela ne fonctionnera que pour les nombres à un chiffre. – Mike

1

Je ne sais pas grand-chose à propos de c-objectif, mais je dirais:

  • Si vous obtenez les numéros à partir d'un tableau, comme nums = array (7,6), initialisez result = 0, puis faites un foreach sur eux. Pour chaque valeur que vous trouvez, faites: res = res * 10 + value. À la fin, même si vous avez 7 numéros à concaténer vous obtiendrez le résultat correct. à savoir:

    Array nums = tableau (7,6,8,9); int res = 0; int valeur; foreach (valeur en nums) res = res * 10 + valeur;

  • Si vous pouvez utiliser des chaînes, il suffit de les concaténer comme suggéré ci-dessus. il y a probablement une fonction pour concaténer toutes les valeurs d'un tableau afin de le rendre flexible.

Hope it helps

C^

Questions connexes