2009-12-30 3 views
3

Je travaille sur le livre "programmation dans l'objectif c 2.0" et je ne comprends pas pourquoi ce programme ne fonctionne pas. fondamentalement j'ai besoin de construire un programme pour convertir une valeur fahrenheit à un celcius. Je pensais juste le résoudre simplement sans objets et juste utiliser une méthodologie procédurale droite, de toute façon le problème que j'ai est que les valeurs des variables que je définis pour représenter les valeurs Fahrenheit ou Celsius sont à venir genre de hasard.programme super simple ne fonctionne pas

Voici mon code:

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    float fahrenheit; 
    float celciusConverted; 
    fahrenheit = 27.0; 
    celciusConverted = (fahrenheit - 32)/1.8 ; 
    NSLog(@"%f degrees fahrenheit is equal to %f degrees celcius") , fahrenheit, celciusConverted; 
    [pool drain]; 
    return 0; 
} 
+0

Qu'entendez-vous par "sorte de hasard"? N'obtiens-tu pas le même résultat à chaque fois? Pourriez-vous poster des exemples de lignes de journal qui sont imprimées? –

Répondre

5

La parenthèse fermante dans votre déclaration NSLog est mal placée. Il devrait être juste avant ;

Qu'est-ce que vous avez est

NSLog(@"... %f %f ..."), arg1, arg2; 

Le compilateur ne semble pas assez intelligent pour voir qu'aucun des %f ont un argument correspondant, un piège commun avec des fonctions comme variadique NSLog(). Après la parenthèse de fermeture, l'opérateur de virgule entre en jeu et les expressions arg1 et arg2 ne font rien.

+1

L'opérateur de virgule devrait juste être jeté dans la prochaine version de C. Son seul but est de rendre les erreurs évidentes comme ceci toujours syntaxiquement valides. – Chuck

+0

Merci beaucoup, fonctionne très bien, cet endroit bascule, va certainement utiliser ce site parce que je commence tout juste à coder avec l'objectif c, avoir une connaissance très limitée de la programmation mais avoir mon coeur sur la création d'une application iphone (prendre un nombre exact) de toute façon vraiment apprécier l'aide. Nick – nickthedude

3

Les arguments d'une fonction sont placés entre parenthèses.

NSLog(@"%f degrees fahrenheit is equal to %f degrees celcius", fahrenheit, celciusConverted); 
+0

merci! cela a fonctionné, apprécie l'aide, commençant juste ici. – nickthedude