La manipulation Bool Valeur Avec une Instruction if
Je suis un étudiant programmeur actuellement à la conception d'une interface utilisateur graphique pour mon entreprise avec Qt et j'ai un assez simple question que j'ai juste ne peut pas sembler trouver la réponse sur le web. Il semble que quelqu'un a dû demandé avant, donc si vous savez où la réponse est Id être heureux avec une référence. Ma question est: peut-on type de données Booléen en c++ être gérées à l'aide d'une instruction if. Ainsi, une valeur booléenne est soit l'un ou zéro, alors pouvez-vous faire quelque chose comme ceci
bool trueOrFalse()
{
myclass temp;
QString tempstr;
double candidate;
bool validate;
tempstr = ui->tableWidgetInjectionLocations->item(i,9)->text();
candidate = tempstr.toDouble(&validate);
if(validate == true)
{
temp.tempProperty = candidate;
}
else
{
QMessageBox error;
error.setText("Error");
error.exec();
}
if (validate == true)
{
return true;
}
else
{
return false;
}
}
Ce que je suis vraiment à la recherche de voici dans la dernière section de ce bool fonction. Lorsque j'utilise le retour suis-je en train de retourner une valeur que cette fonction serait alors de détenir ou suis-je à l'aide d'un mot clé de retour de façon inappropriée? Une fois que la validation a passé Id tiens à être en mesure d'utiliser la fonction pour indiquer si ou de ne pas procéder d'une autre fonction, Veuillez garder mes critiques constructives s'il vous plaît. Comme un étudiant, je suis seulement intéressé à améliorer.
if
déclaration et simplement dire return validate;
. Autre que cela, il semble acceptable, vous êtes de retour à la bool
par la valeur, il n'est pas "tenu" par la fonction de toute façonCe que, si quelque chose, pensez-vous est le problème avec ce code? J'ai du mal à comprendre vraiment ce que votre question est ici.
Bienvenue sur StackOverflow!
Qu'entendez-vous par "retour d'une valeur que cette fonction serait alors tenir". Soit je n'ai pas compris ce que tu voulais dire, ou si vous avez des idées erronées sur la façon dont C++ fonctionne (c'est à dire les fonctions ne font pas contenir des valeurs). Vous pourriez préciser
La raison pour laquelle j'ai le format si (valider == true) { return true; } else { return false; } c'est parce que mon original si l'instruction est comme si (validate1 == true && validate2 == true && validate3 == true && ... et si mes valider les booléens ne retourne true je veux que les données à ajouter à un vecteur que j'ai bâtie, et de donner ensuite la fonction parent d'une valeur de true; Suis-je mis en place pour cela dans ce cas?
OriginalL'auteur Wylie Coyote SG. | 2012-01-13
Vous devez vous connecter pour publier un commentaire.
La valeur que vous retournez à l'aide de la
return
déclaration est littéralement retourné à chaque fois que vous appelez la fonction.Donc, si vous écrivez ce code quelque part d'autre dans votre programme:
puis le
returnValue
variable contient une valeur Booléenne équivalent à ce qui a été renvoyée par letrueOrFalse()
fonction.La fonction elle-même n'est pas "tenir" la valeur, l'appelant de la fonction définit une variable qui contiendra la valeur après l'appel de la fonction est terminée.
Quant à votre deuxième question, vous sont à l'aide de la
return
énoncé correctement, mais vous pouvez simplifier votre code dans letrueOrFalse()
fonction de manière substantielle. Au lieu de cela:Tous vous avez besoin est cela:
Parce que le
validate
variable locale est déjà unbool
!Cela supprime la redondance de la vérification d'une valeur Booléenne à l'encontre d'une constante Booléenne (
true
), ce qui évite des erreurs étranges rampant dans et rend le code plus facile à lire et à comprendre.En fait, vous pouvez utiliser ce schéma général toutes les fois que vous travaillez avec des valeurs Booléennes (
bool
). Plutôt que de comparer entre eux contre le littéralfalse
outrue
, il vous suffit d'écrire:ou
Oui, c'est correct. Mais comme Blastfurnace dit, vous pouvez toujours utiliser la syntaxe simplifiée (
if (validate1 && validate2 && validate3)
). La raison pour laquelle il fonctionne correctement est en raison de la&&
opérateur, qui assure que tous de cas sont vrais.comment l'instruction if sais que je suis à la recherche pour les données pour être vrai, alors?Est-ce parce que bool valeurs sont toutes vraies, à moins que le préfixe avec un !? J'ai aussi besoin de l'instruction if pour se déclarer ou non la trueOrFlase fonction est une valeur true ou false bool, de sorte qu'il peut être utilisé dans une autre fonction pour décider si ou de ne pas poursuivre.
Oui, vous êtes toujours à la vérification de la vérité dans un
if
déclaration. Implicitement, vous êtes à la vérification devalidate1 == true
la vérité, alors vous pouvez écrire(validate1 == true) == true
, mais c'est idiot. Le même schéma s'applique si, vous permettant de réduire encore plus justevalidate1
. Le!
opérateur ("pas" l'opérateur) annule ce que vous l'appliquez, donc c'est la même chose que la vérification de la fausseté.Merci, Vous avez un air de défi m'a aidé aujourd'hui! J'ai aussi beaucoup apprécié la façon dont on vous a compris!
OriginalL'auteur Cody Gray
Remplacer
avec
Il n'y a pas de raison de le tester et de retourner un autre type boolean.
Pendant que vous y êtes, en remplacement du précédent
avec
OriginalL'auteur Paul Tomblin