If functie in een if-functie

Status
Niet open voor verdere reacties.

robbiedoes90

Nieuwe gebruiker
Lid geworden
3 sep 2009
Berichten
4
Zoals de titel van deze draad al expliciet aangeeft, zit ik met de vraag of het überhaupt wel mogelijk is om een if-functie in een if-functie te gebruiken. Het gaat er in feite om dat er aan een bepaalde voorwaarde voldaan moet worden, maar als daar eenmaal aan voldaan is, dan zijn er nog enkele voorwaarden waar deze aan voldaan moet worden. Het ging in principe om dit idee:

else if (Currentmonth = Birthmonth)

{

if (Currentday < Birthday)

{

cout << "Uw leeftijd is: " << Year_difference << endl;

}

else if (Currentday => Birthday)

{

int Real_age = Year_difference + 1;

cout << "Uw leeftijd is: " << Real_age << endl;

}

}

Als ik dit compileer dan krijg ik foutmeldingen. Ik ben overigens nog nergens een voorbeeld tegen gekomen waarin een if functie in een if functie wordt gebruikt. Vandaar dat ik ook niet zeker weet of ik de notatie goed toepas. Alvast bedankt voor de hulp.
 
Een IF-functie kan prima binnen een IF-functie.

Wat voor foutmeldingen krijg je?
 
Een IF-functie kan prima binnen een IF-functie.

Wat voor foutmeldingen krijg je?

Ik heb de fout al gevonden. Ik had namelijk die variabelen als currentmonth als een const gedeclareerd. Blijkbaar kan je ze dan niet bewerken, wat ook wel logisch lijkt. In ieder geval bedankt voor je hulp. Het blijkt dus inderdaad te kunnen.
 
Je compiler gaf hier geen foutmelding (mijn compiler geeft "expected primary-expression before '>' token")?
Code:
else if (Currentday => Birthday)
Dat moet
Code:
else if (Currentday >= Birthday)
zijn.

Verder is dit
Code:
else if (Currentmonth = Birthmonth)
wel correct, maar niet wat je wilt. Hiermee geef je "Currentmonth" de waarde van "Birthmonth" en dit zal altijd waar zijn, tenzij "Birthmonth" nul is. Wat je hier waarschijnlijk bedoelt is
Code:
else if (Currentmonth == Birthmonth)
Hiermee controleer je of "Currentmonth" gelijk is aan "Birthmonth".
 
Verder is dit
Code:
else if (Currentmonth = Birthmonth)
wel correct, maar niet wat je wilt. Hiermee geef je "Currentmonth" de waarde van "Birthmonth" en dit zal altijd waar zijn, tenzij "Birthmonth" nul is.

Hoewel je gelijk hebt dat dit niet goed is, is je uitleg niet juist.
Wat "robbiedoes90" hier eigenlijk aan de compiler verteld is: Wijs 'Birthmonth' toe aan 'Currentmonth' en controleer of dit gelukt is. Wanneer dit gelukt is zal de code tussen {} uitgevoerd worden, anders niet.
Dus of 'Birthmonth' nul is of niet, deze 'if' zal altijd true zijn.
De enige manier waarop deze of niet 'true' zal zijn is wanneer 'Currentmonth' niet schrijfbaar is. Dat kan bijvoorbeeld zijn door hem als "const int Currentmonth" te declareren:)
 
Wat "robbiedoes90" hier eigenlijk aan de compiler verteld is: Wijs 'Birthmonth' toe aan 'Currentmonth' en controleer of dit gelukt is.

Nee. In dit geval wordt de aan "Currentmonth" toegekende waarde gebruikt als "waarheidswaarde". Voorbeeldje:
Code:
#include <iostream>

using namespace std;

int main()
{
        int blaat;
        int blaat2;
        cin >> blaat;
        if (blaat2 = blaat)
        {
                cout << "hoi\n";
        }
        else
        {
                cout << "doei\n";
        }
 return 0;
}

frank@darkstar:~$ g++ -Wall -ansi -o test test.cpp
test.cpp: In function 'int main()':
test.cpp:10: warning: suggest parentheses around assignment used as ****h value
frank@darkstar:~$ ./test
0
doei
frank@darkstar:~$ ./test
1
hoi

Als ik 0 (false) toe ken aan "blaat" levert het "doei" op, anders (waar) levert het "hoi" op.

[edit]Grappig. Blijkbaar is hier een scheldwoordenfilter actief die het woord "t r u t h" (zonder spaties) verandert in ****h.[/edit]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan