Kleine Entdeckung...

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

TheShadow

Moderator

Betreff: Kleine Entdeckung...

BeitragMo, Okt 03, 2005 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hab im engl. Forum nun was gefunden...

Code: [AUSKLAPPEN]

Function F1:Int()
   Print "F1"
   Return True
End Function

Function F2:Int()
   Print "F2"
   Return True
End Function

If F1() Or F2()
   Print "TRUE"
EndIf



Man sieht, dass die 2. Funktion nicht ausgeführt wird.
oder hier

Code: [AUSKLAPPEN]
Strict

Type test
Field val:Int
EndType

Local xxx:test

If xxx<>Null And xxx.val=1 Then Print "COOL"
Print "OK"


wenn xxx NULL ist, dann wird nix weiter gemacht...
In Blitz2D/3D/Plus ist es ja nicht so... der 2. Code würde sogar einen Fehler produzieren...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Fetze

BeitragMo, Okt 03, 2005 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Tolle Sache das, ist aber glaube ich schon bekannt ^^
 

Ava

Gast

BeitragMo, Okt 03, 2005 13:46
Antworten mit Zitat
Also mir war es schon bekannt. Smile
Ich war aber auch sehr verwundert -und entzückt zugleich -,
als ich das herausgefunden hatte. *g*

Jolinah

BeitragMo, Okt 03, 2005 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das untere funktioniert bei mir aber, hast nur vergessen die val Eigenschaft vorher auf 1 zu setzen.

Edit: Achso hab falsch abgeschrieben, du hast ja xxx auf Null gelassen Wink
Bei C# (evtl. auch bei C/C++) ist es aber auch so bei Variablen. Denn es ist ja klar dass die UND-Bedingung nicht erfüllt sein kann wenn das erste schon False ergibt, so muss das zweite gar nicht geprüft werden. Bei Funktionen weiss ich nicht wie es bei C# aussieht, aber ich find auch da sollte die zweite Funktion trotzdem ausgeführt werden.

Hat mich bei b3d immer genervt, immer 2 ineinander verschachtelte Ifs wo eins genügen würde...
  • Zuletzt bearbeitet von Jolinah am Mo, Okt 03, 2005 14:15, insgesamt 2-mal bearbeitet

TheShadow

Moderator

BeitragMo, Okt 03, 2005 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hab nix vergessen... das object xxx existiert nähmich gar nicht. und das würde in bb2d/3d/plus zu einem fehler führen - da ich im 2. schritt auf die eigenschaft vom Objekt zugreifen will, was wie gesagt gar nicht existiert...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Jolinah

BeitragMo, Okt 03, 2005 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
C/C++/C# verhält sich identisch wie BMax (oder umgekehrt Wink):

Code: [AUSKLAPPEN]
#include <iostream>
using namespace std;

bool f1();
bool f2();

class test
{
   public:
      int val;

      test();
};

test::test()
{
   val = 0;
}

int main(int argc, char *argv[])
{
   if (f1() || f2()) cout << "OK" << endl;

   test *xxx = 0;
   if (xxx != 0 && xxx->val == 1) cout << "COOL" << endl;

   char a;
   cin >> a;
   
   return 0;
}

bool f1()
{
   cout << "f1" << endl;
   return true;
}

bool f2()
{
   cout << "f2" << endl;
   return true;
}


1. Nur f1() wird ausgeführt.
2. Es gibt kein Fehler weil xxx = 0 ist und der Rest gar nicht erst abgefragt wird.

Ich glaub aber bei Basic war das anders, deshalb gibts in VB .NET unterschiedliche Schlüsselwörter: And = Altes Verhalten welches einen Fehler auslösen würde. AndAlso = Verhalten wie in C/C++/C#

rema

BeitragMo, Okt 03, 2005 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Dies mit AND und OR, sind schon von anfang an bekannt gewesen. Sollte auch so sein wie in C/C++
 

Serge

BeitragFr, Okt 07, 2005 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ach das war bei älteren blitzbasic Versionen nicht der Fall?
Ist ja eigentlich nur logisch, dass man den zweiten teil nicht ausführen braucht wenn sich dadurch nichts ändert Smile
http://www.dark-matter-soft.de

TheShadow

Moderator

BeitragMo, Jan 02, 2006 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
noch kleine Entdeckung:


Code: [AUSKLAPPEN]

Function test(v1=1, v2=2, v3=3, v4=4)
EndFunction

test(, , , 100)


was früher mal in BB nicht ging - aber z.B. in QB damals schon, geht nun auch in BlitzMax. Optionale Parameter können komplett weggelassen werden - dies können auch Parameter am Anfang sein.

Wenn ihr mehr findet, schreibt sowas hier rein...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

regaa

BeitragDi, Jan 03, 2006 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrr, das nicht benötigte Parameter am Anfang einfach weggelassen werden können wusste ich nicht. Danke!
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group