#Null vs 0
#Null vs 0
Gibt es irgendein Grund #Null für "NULL" zu nutzen anstatt 0?
Wenn Ich mir den PB generierten ASM Code anschaue kommt das gleiche raus.
Gibt es kein NULL in PB?
Wenn Ich mir den PB generierten ASM Code anschaue kommt das gleiche raus.
Gibt es kein NULL in PB?
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:54, insgesamt 1-mal geändert.
~ DELETE ~
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: #Null vs 0
Was meinst du mit "Gibt es kein Null in PB?"?
Meinst du so ein "null" wie in Java? Dann ist die Antwort: Nein.
Wenn du in PB Objekte nutzt, musst du sie zuerst korrekt freigeben und dann kannst du die Variable, die das Objekt enthielt einfach gleich 0 setzen. In Java macht der GarbageCollector das ReferenceCounting und Freigeben des Objektes für dich. Und #Null ist wie schon gesagt genau das selbe. Also es gibt keinen Grund entweder das eine oder andere zu nutzen. Manchmal sieht vielleicht #Null einfach schöner aus als 0. Manchmal auch umgekehrt.
Meinst du so ein "null" wie in Java? Dann ist die Antwort: Nein.
Wenn du in PB Objekte nutzt, musst du sie zuerst korrekt freigeben und dann kannst du die Variable, die das Objekt enthielt einfach gleich 0 setzen. In Java macht der GarbageCollector das ReferenceCounting und Freigeben des Objektes für dich. Und #Null ist wie schon gesagt genau das selbe. Also es gibt keinen Grund entweder das eine oder andere zu nutzen. Manchmal sieht vielleicht #Null einfach schöner aus als 0. Manchmal auch umgekehrt.
Re: #Null vs 0
Na z.b. bei WinAPI's gibt es doch optionale Parameter.
Da wird immer NULL geschrieben,wie:
GetModuleHandle(NULL)
In PB mach es keinen Unterschied ob ich GetModuleHandle_(#NULL) oder GetModuleHandle_(#0) schreiben.
Da wird immer NULL geschrieben,wie:
GetModuleHandle(NULL)
In PB mach es keinen Unterschied ob ich GetModuleHandle_(#NULL) oder GetModuleHandle_(#0) schreiben.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: #Null vs 0
Es gibt aber initialsierte Strings und nicht initialsierte Strings:
und es gibt #Null und #Null$
aber die sind mehr zum "anschauen"
und bei der API ist es wurscht was Du schreibst!
Code: Alles auswählen
test1.s = ""
test2.s
Debug @test1
Debug @test2
Code: Alles auswählen
Debug #Null
Debug #NULL$

und bei der API ist es wurscht was Du schreibst!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: #Null vs 0
Ja, weil das NULL aus der MSDN die Konstante NULL aus den Header-Dateien der WinAPI ist. In C/C++ schreibst du einfach "#define NULL 0" und schon wird die Zeichenkette NULL überall zu 0 übersetzt. Und da bei PB Konstanten eben mit einer Raute beginnen, ist das genau das gleiche.
Im Grunde ist es doch nur eine Konventionsfrage. NULL lässt sich meiner Meinung in einer Dokumentation wie der MSDN einfach leichter lesen als eine 0, oder war's vielleicht auch ein O?
Also es geht hier eigentlich um eine Frage, über die man gar nicht diskutieren braucht, weil jeder einfach das nutzen sollte, was er mag.
Es ist ein ähnliches Thema wie die Wahl der Sprache für den Code und Kommentare oder wie man seine Variablennamen formatiert:

Im Grunde ist es doch nur eine Konventionsfrage. NULL lässt sich meiner Meinung in einer Dokumentation wie der MSDN einfach leichter lesen als eine 0, oder war's vielleicht auch ein O?
Also es geht hier eigentlich um eine Frage, über die man gar nicht diskutieren braucht, weil jeder einfach das nutzen sollte, was er mag.
Es ist ein ähnliches Thema wie die Wahl der Sprache für den Code und Kommentare oder wie man seine Variablennamen formatiert:
Code: Alles auswählen
; Definition der Variablen 'meineVariable.i'
Define.i meineVariable = 123
Define meineVariable = 123 ; meineVariable setzen.
Define.i MeineVariable
Define MEINE_VARIABLE.I
; Definition of my_variable.i
Define.i my_variable

Re: #Null vs 0
Okay, dann ist es also das Gleiche 

PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:54, insgesamt 1-mal geändert.
~ DELETE ~
Re: #Null vs 0
CodeCommander, Nö, kein Danke für dich.
Meine Frage war ja nun mal der Unterschied von Null und 0.
Und Du hast meine Vermutung das es einen Unterschied gibt bestätigt anstatt wiederlegt.

Meine Frage war ja nun mal der Unterschied von Null und 0.
Und Du hast meine Vermutung das es einen Unterschied gibt bestätigt anstatt wiederlegt.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Re: #Null vs 0
Hallots-soft hat geschrieben:
Debug @test1
Debug @test2[/code]
und es gibt #Null und #Null$aber die sind mehr zum "anschauen"Code: Alles auswählen
Debug #Null Debug #NULL$
![]()
und bei der API ist es wurscht was Du schreibst!
Ich dachte am Anfang auch das es Wurscht ist bei Winapi.
Das ist aber nicht so. Bei manchen API ist nur #null$ statt #null oder 0 gültig.
Sonst funktionieren einige Dll-Calls nicht.
Grüße
Lite