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

Anonymous

unregistriert

1

20.08.2003, 15:44

Logischer Operator && in if-Anweisung

Hallo Leute ich habe eine Frage zu der if-Anweisung und dem && Operator. Ich möchte mit der o.g. Anweisung die Schnittstellen meiner Netzwerkklasse bearbeiten. Jetzt wollte ich wissen ob ich das so korrekt gemacht habe.

Quellcode

1
2
3
4
5
if(m_pDPVoiceTest != NULL && m_pDPVoiceServer != NULL)
    {
    // Anweisung    
    }
    


oder ob das so müsste :

Quellcode

1
2
3
4
5
6
7
8
if((m_pDPVoiceTest != NULL) && (m_pDPVoiceServer != NULL)
        && (m_pDP8VoiceClient != NULL) && (m_pDP8Server != NULL)
        && (m_pDP8Peer != NULL) && (m_pDP8LobbyClient != NULL)
        && (m_pDP8LobbiedApplication != NULL) && (m_pDP8Client != NULL)
        && (m_pDP8AddressIP != NULL) && (m_pDP8Address != NULL))
    {
        // Anweisung
    }

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

20.08.2003, 15:50

Meinst Du jetzt, ob die Klammern dahin müssen?
Nein, müssen sie nicht.

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

3

20.08.2003, 16:02

Abprüfen

Na was wird denn alles in der Anweisung benötigt?
Also ich würde nur einmal abprüfen, was auf Null liegt. Oder dann, wenn ein Zeiger den Connect verlieren könnte erneut abprüfen.
Reicht es nicht, nach der Erstellung der Schnittstellen, abzuprüfen und sich dann auf die Adresse zu verlassen?
Achso, meinst Du wirklich die Klammern? Na wenn Du nur && verwendest, brauchst Du keine Klammern. Alle && sind gleichberechtigt. && wird vor || verglichen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

20.08.2003, 16:14

Da fällt mir was lustiges ein:

Einfacher Test, ob eine Zahlenreihe nur aus Nullen besteht: Summe bilden. Falls null, sind alle null (negative Zahlen werden ausgeschlosssen).

Test, ob eine Null in einer Zahlenreihe vorkommt: Produkt bilden. Falls null, ist mindestens eine Null dabei.

Könnte man vielleicht auch auf Zeiger übertragen :)
Zumindest ist es dann schneller zu schreiben, schneller als jeden einzelnen mit "== NULL" oder "!" zu überprüfen, und es kommen ja auch noch "||" oder "&&" dazu.

Anonymous

unregistriert

5

20.08.2003, 17:00

Ok,,,

dann brauche ich jetzt die ganzen Klammern nicht setzen. Theoretisch könnte ich doch auch die ganzen Schnittstellen zusammen fassen !?

6

20.08.2003, 19:21

du kannst es auch so schreiben (ohne != NULL)

zusammengefasst nach davids vorschlag:

Quellcode

1
if (Test*Server*Client*Server2...)
stay tight, project universe comes back!
### project earth <> 2004 ###

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

20.08.2003, 19:57

Kann man Pointer wirklich multiplizieren? Das ist die Frage, ob C++ das zulässt.

8

20.08.2003, 21:50

ka, im endeffekt is ja auch alles nur ne zahl...
notfalls castet man...

hat vielleicht jemand einen link mit der operatorrangfolge, also welcher operator vor welchem anderen berechnet wird?
stay tight, project universe comes back!
### project earth <> 2004 ###

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

20.08.2003, 21:54

War ja auch mehr als Witz gedacht :)

10

21.08.2003, 14:20

Zitat

hat vielleicht jemand einen link mit der operatorrangfolge, also welcher operator vor welchem anderen berechnet wird?
Steht in der MSDN drinn. Einfach mal im Index "Operatorr" angeben. Dann wirds schon angezeigt.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige