Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.10.2003, 12:01

Rückgabewerte 0 und 1

Also, was ist davon nun TRUE und was FALSE?
Ich habe schon beide Werte als Rückgabewert bei Funktionen, die erfolgreich verlaufen sind, gesehen.

2

25.10.2003, 12:21

Kommt auf die abfrage an.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Bla()
{
return 0;
}

if (Bla == 0)
{
alles ok
}

int Bla()
{
return 1;
}

if (Bla == 1)
{
alles ok
}

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

3

25.10.2003, 13:30

du kannst afaik nur sagen true != 0 oder false = 0
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Jumping Jack

Treue Seele

Beiträge: 142

Wohnort: Hamburg

Beruf: Schüler

  • Private Nachricht senden

4

25.10.2003, 16:11

Manche Funktionen geben nur zurück, ob sie fehlgeschlagen sind oder nicht.
Andere geben, wenn sie fehlgeschlagen sind, eine Fehlernummer zurück.
Oder beziehst du dich nur auf Funktionen mit Rückgabetyp bool?

Allgemein gilt jedenfalls:
TRUE != 0
FALSE = 0

Das kann man aber nicht gleich als nicht fehlgeschlagen oder fehlgeschlagen interpretieren.

5

25.10.2003, 17:02

ja, ok, das klingt alles logisch!

Danke für die Hilfe!

6

27.10.2003, 12:48

Quellcode

1
2
1 == static_cast<int>(true)
0 == static_cast<int>(false)


Allerdings braucht man nicht explizit zu konvertieren.
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

7

27.10.2003, 19:26

Zitat von »"_progger_"«

Quellcode

1
2
1 == static_cast<int>(true)
0 == static_cast<int>(false)


Allerdings braucht man nicht explizit zu konvertieren.


Vergiss nicht man kann nicht int zu bool casten! es gibt nur diese möglichkeit:

bool mybool = int_Wert ? true : false;

einen cast wie sowas hier gibt eine Warnung aus wenn du einen halbwegs guten Compiler hast:

bool mybool = static_cast<bool>int_Wert;

8

01.11.2003, 12:09

Zitat von »"Patrick"«


Vergiss nicht man kann nicht int zu bool casten! es gibt nur diese möglichkeit:

bool mybool = int_Wert ? true : false;

einen cast wie sowas hier gibt eine Warnung aus wenn du einen halbwegs guten Compiler hast:

bool mybool = static_cast<bool>int_Wert;


Natürlich geht das. Laut Standard-C++ kann man einen int implizit in einen bool konvertieren. Wenn man die Warnung nicht haben will schreibt man eben wie du oder mit dem Konstruktor:

Quellcode

1
bool b = bool(int_Wert);
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

9

01.11.2003, 14:08

das was du sagst ist ANSI C standard und kein ISO C++ Standard!

Laut ISO C++ Standard ist das casten OHNE Warnung nicht möglich! (So sind auch die C99 compiler aufgebaut)

die einzigste möglichkeit ist diese hier ohne warnung:

bool mybool = int_Wert ? true : false;

Achja, DATEITYPEN haben keinen Con und Destructor!

10

01.11.2003, 16:10

Was bitte sind Dateitypen? Meinst du Datentypen? Oder meinst du vielleicht die integrale Typen?

Quellcode

1
static_cast<T>(a)

ist bei den integralen Typen äquivalent zu

Quellcode

1
T(a)

Das zweite ist die Konstruktorschreibweise, deshalb hab ich es Konstruktor genannt.

Zitat von »"Patrick"«


Laut ISO C++ Standard ist das casten OHNE Warnung nicht möglich! (So sind auch die C99 compiler aufgebaut)

Bei mir funktioniert die oben als zweite genannte Methode ohne Warnung, aber du magst trotzdem recht haben.

Nochmal:

Zitat von »"Stroustrup"«


Zeiger, ganze Zahlen unt Gleitkommawerte können implitit in bool umgewandelt werden. Ein Wert ungleich Null wird true, der Wert Null in false umgewandelt.

Das ist ANSI/ISO Standard-C++
Ein Gespenst geht um in Europa...

Werbeanzeige