|
Тема |
Re: C++ NULL или 0? [re: Maтa Kocмaтa] |
|
Автор |
zaphod (void *lpNothing) |
|
Публикувано | 25.04.06 18:54 |
|
|
като бях млад, пишех стриктно NULL, но откакто видях че в някои свои сорсове микрософт ползват if(p)....., реших че май не си струва да се натягам. кастинга на инт към указател е забранен, не можеш да напишеш void *p=5, но можеш да напишеш 0. това показва едно: 0 е всъщност официално признато за NULL, иначе нямаше да се приема. един приятел оня ден ми каза, че на 64 битови компилатори, можело като предаваш параметър 0 когато се иска указател, да се нулират само младшите 32 бита на указателя, понеже компилатора броял 0 за инт. аз обаче не съм го пробвал и ако наистина е така, то мисля това трябва да се брои бъг на компилатора. или 0 ще е NULL, или няма да се позволява каст. освен това, ако на нормален компилатор направя
WORD a=0;
void *p=(void*)a, то целия р става 0, а не само младшите 16 бита.
така че, за мене 0 си е NULL, и понеже е по-кратко, ползвам него.
NE SUTOR ULTRA CREPIDAM
|
| |
|
|
|