|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | (покажи всички)
Тема
|
C++ NULL или 0?
|
|
Автор |
Maтa Kocмaтa (маймун) |
Публикувано | 25.04.06 15:24 |
|
Един спам и от мене.
Какво предпочитате да ползвате NULL или 0?
Например
boza* p = 0;
int i = 0;
if (p == 0)...
Или
boza* p = NULL;
int i = 0;
if (p == NULL)...
--------------------------------------
Уж е модерно да се пише 0.
Ама гледах някъде, че се канят да добавят 'ключова дума' null_ptr...?
Машина за отделяне на кожа и сланина от парени свине
| |
Тема
|
Re: C++ NULL или 0?
[re: Maтa Kocмaтa]
|
|
Автор | willie (Нерегистриран) |
Публикувано | 25.04.06 15:33 |
|
аз лично съм за (NULL == p) 
| |
|
Нали требва да има проблеми и за хората след теб!
--------
Едно време, някъде в мъглявината Андромеда, нещо се говореше, че може някога, някъде, на специфичен хардуер NULL != 0, защото да речем ROM пойнтерите се формирали например по специфичен начин, и NULL за тях де не е 0, анещо друго, например 0xFF000000.
--------
Но явно това се случва само някъде в мъглявината, щото аз поне не съм срещал такова чудо.
| |
|
| |
|
като бях млад, пишех стриктно 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
| |
Тема
|
Бъркаш езиците
[re: AMД]
|
|
Автор |
Colombino (работен) |
Публикувано | 25.04.06 20:09 |
|
В C имаш
#define NULL ((void*)0)
тва дето си го чувал е за там.
В C++ 0 е дефинирана за всеки тип (за съжаление не и за структури и масиви. За масиви ползвам разширението на Майкрософт {0}, ама с нежелание) и няма нужда да пишеш
long n = 0L;
За това и там е
#define NULL 0
т.е. тва винаги ша си е 0, а ако решат за съответната машина ша я направят тая нула да е 0x80000000, примерно.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
| |
Тема
|
Re: C++ NULL или 0?
[re: Maтa Kocмaтa]
|
|
Автор | Penguin (Нерегистриран) |
Публикувано | 25.04.06 20:50 |
|
NULL е указател, така че го ползвам там където трябва да има указател. 0 е число, така че го ползвам навсякъде където трябва да има число, включително и при терминирането на стрингове (char [])
| |
|
ако не са го променили
според дефиницията за инт, той е с дължината на думата за съответната платформа => за 64 битов компилатор, инта би трябвало да е 64 битов.
| |
Тема
|
Re: C++ NULL или 0?
[re: ~!@$%^amp;*()_+]
|
|
Автор | zzfe (Нерегистриран) |
Публикувано | 26.04.06 02:38 |
|
Не знам дали са го променяли, но съм сигурен че никога не са го спазвали. 
| |
Тема
|
Re: C++ NULL или 0?
[re: Penguin]
|
|
Автор | null (Нерегистриран) |
Публикувано | 26.04.06 17:29 |
|
е как разбра, че NULL е указател, в c++ си е баш 0? :)
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | (покажи всички)
|
|
|