#Null vs 0

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

#Null vs 0

Beitrag von _JON_ »

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?
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:54, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
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

Beitrag von NicTheQuick »

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.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: #Null vs 0

Beitrag von _JON_ »

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.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
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

Beitrag von ts-soft »

Es gibt aber initialsierte Strings und nicht initialsierte Strings:

Code: Alles auswählen

test1.s = ""
test2.s

Debug @test1
Debug @test2
und es gibt #Null und #Null$

Code: Alles auswählen

Debug #Null
Debug #NULL$
aber die sind mehr zum "anschauen" :lol:

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.
Bild
Benutzeravatar
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

Beitrag von NicTheQuick »

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:

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
:wink:
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: #Null vs 0

Beitrag von _JON_ »

Okay, dann ist es also das Gleiche :D
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:54, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: #Null vs 0

Beitrag von _JON_ »

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.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
lite
Beiträge: 122
Registriert: 27.08.2012 21:08

Re: #Null vs 0

Beitrag von lite »

ts-soft hat geschrieben:
Debug @test1
Debug @test2[/code]
und es gibt #Null und #Null$

Code: Alles auswählen

Debug #Null
Debug #NULL$
aber die sind mehr zum "anschauen" :lol:

und bei der API ist es wurscht was Du schreibst!
Hallo

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
Antworten