Non valide les opérandes binaires
J'ai une méthode de vérification de la météo un nombre est pair ou impair:
-(BOOL)numberIsEven:(unsigned int *)x {
if (x & 1)
{
return TRUE;
}
else
{
return FALSE;
}
}
cependant à chaque fois que je le compile j'obtiens l'erreur:
Invalid operands to binary %
De sorte qu'il compile en assemblée en tant que module de fonction et, à défaut, d'une certaine manière, cependant, si j'utilise un module de fonction (sans doute le plus lent), je reçois le même message d'erreur!
M'aider à débordement de pile
Merci
Ollie
if (isTrue) { return true; } else { return false; }
paradigme. Oh boy.- En dehors de toutes les autres questions, lorsque vous corrigez le bug de ne pas déréférencement du pointeur, votre nom de la méthode est vraiment nul car il renvoie la valeur true si x est impair.
- Pourriez-vous poster le code réel et le message d'erreur? Ce que vous avez posté est évidemment faux.
Vous devez vous connecter pour publier un commentaire.
x
est un pointeur. L'opérateur modulo ne fonctionnera pas sur les pointeurs.Ce déréférence le pointeur, puis renvoie le résultat du modulo (implictly cast pour un BOOL)
Je soupçonne que vous êtes en train de lire le message d'erreur de mal et il a vraiment dit "Invalid opérandes binaires &".
La raison, il dit que c'est "x" est un pointeur, donc vous devez vous dire:
pas
C'est parce que (à part le fait que votre code contient de nombreuses fautes de frappe) x est défini comme un pointeur. Un pointeur ne peut pas avoir le module effectuée sur celui-ci, le résultat est vide de sens.
Depuis
x
est un pointeur vers un int, vous avez besoin de déférence en premier.Alternativement, vous pouvez modifier la signature de prendre un
unsigned int
. Je ne vois aucun avantage à en passant un pointeur dans cette situation.Sauf que ce qui est fait C, afin de ne pas obtenir quoi que ce soit par la conversion en booléen.
Fonctionnent tout aussi bien.
bool isOdd(int x) { return !isEven(x); }
,bool isEven(int x) { return !isodd(x); }
=D