Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » return beendet nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.02.2007, 19:49 Uhr
mischa
Fragender


hallo
wenn ich mich richtig errinere beendet doch z.B ein return true eine funktion;
ich habe folgende funktion

C++:
bool foo(std::string str)
{
if(str=="LOAD")
         {
                            out_data.push_back("0E\n");
                          return true;
         }
std::cout<<"Hier sollte eigentlich nichts stehen"<<std::endl;
return false;
}


selbst wenn in str "LOAD" absolut sicher steht wird das "Hier sollte eigentlich nichts stehen"
rausgegeben und der rückgabe wert ist false. warum?
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.02.2007, 20:17 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Bei mir geht es:

C++:
#include <iostream>
#include <string>

bool foo(std::string str)
{
    if(str == "LOAD")
    {
        return true;
    }
    std::cout<<"Hier sollte eigentlich nichts stehen"<<std::endl;
    return false;
}

int main(int argc, char* argv[])
{
    std::cout.setf(std::ios::boolalpha);
    std::cout << foo("bla") << std::endl;
    std::cout << foo("LOAD") << std::endl;
    return EXIT_SUCCESS;
}

Ausgabe:

Code:
debian31lamp:/var/www# ./test
Hier sollte eigentlich nichts stehen
false
true

--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

Dieser Post wurde am 28.02.2007 um 20:17 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.02.2007, 22:04 Uhr
mischa
Fragender


hm komisch
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.02.2007, 22:08 Uhr
Lensflare



if(strcmp(str,"LOAD") == 0)
anstelle von
if(str=="LOAD")
sollte gehen.

andernfalls vergleichst du, ob es die selben instanzen sind.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 28.02.2007 um 22:09 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.02.2007, 22:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Lensflare:
if(strcmp(str,"LOAD") == 0)
anstelle von
if(str=="LOAD")
sollte gehen.

andernfalls vergleichst du, ob es die selben instanzen sind.

nein, std::string bietet einen entsprechenden operator an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.02.2007, 22:18 Uhr
Lensflare



und wie vergleicht man dann, ob es die selben Instanzen sind?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.02.2007, 22:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Lensflare:
und wie vergleicht man dann, ob es die selben Instanzen sind?

&str == &otherstr


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.02.2007, 22:30 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Das wäre in C der Fall, std::string hat operator== überladen - für eben diesen Fall.
Was für einen Compiler nutzt du?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.02.2007, 22:43 Uhr
Lensflare




Zitat:
&str == &otherstr

achja, stimmt ^^
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
01.03.2007, 01:19 Uhr
0xdeadbeef
Gott
(Operator)


Sach ma, seid ihr denn alle blind? Bei

C++:
    std::cout << foo("bla") << std::endl;


ist es nun wirklich nicht verwunderlich, wenn

C++:
    if(str == "LOAD")


nicht in den entsprechenden Block springt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: