Sensul cuvântului nul. Ce este NULL și pentru ce este?

Când tocmai începusem să studiez programarea în limbajul C în primii ani de universitate, cuvântul NULL, pe care l-am văzut cândva în codul dat de lector pe tablă, m-a condus, dacă nu cu uimire, dar totuși cu uimire. . Cuvântul pare să fie similar cu „zero”, dar, de fapt, probabil că nu este zero. Pentru ce este acest „capslock” amenințător sfidător? Acest NULL are vreo legătură cu zero? Nu existau răspunsuri la aceste întrebări care mi-au apărut în cap.

Și înaintea acestui cuvânt a existat o ciudată dublă egalitate. De ce a scris profesorul semnul „egal” de două ori? La început am crezut că este probabil o greșeală de scriere. Sau creta a făcut o greșeală în mijlocul liniilor lungi. Dar în aceeași construcție care conținea egalitate NULL și dublă, exista și o egalitate obișnuită, iar liniile din ea nu erau deloc lungi. Și am început să ghicesc vag că NULL este un fel de zero neobișnuit, iar două semne „egale” înseamnă un fel de egalitate neobișnuită. Totul despre acest nou și de neînțeles limbaj de programare era neobișnuit.

Voi cita acest rând, care m-a șocat cu mulți ani în urmă, în acest articol. Acum vom încerca să ne dăm seama ce este NULL, cum este utilizat și dacă poate fi înlocuit cu un zero „obișnuit”.

NULL este o macrocomandă a cărei definiție este conținută în biblioteca stdlib.h. Valoarea sa este o adresă care nu poate fi accesată. Un program care utilizează macro-ul NULL nu plasează niciodată date la această adresă.

Valoarea NULL poate fi atribuită unui pointer de orice tip, inclusiv celor netipizate. De exemplu, toate următoarele sarcini sunt corecte:

Char *p1 = NULL; int *p2 = NULL; void *p3 = NULL;

Este apelat un pointer care conține o valoare NULL zero. Astfel, pointerii p1, p2 și p3 descriși mai sus sunt nuli.

Să ne uităm acum la situațiile în care sunt utilizate macrocomanda NULL și pointerii nuli.

    Funcții selecție dinamică memoriei este returnată de obicei adresa zonei alocate în caz de succes și NULL în caz de eșec. Exact așa se comportă, de exemplu, funcția de bibliotecă malloc(). Datorită acestui fapt, codul care apelează o astfel de funcție poate gestiona corect o situație în care memoria nu a putut fi alocată; Să ilustrăm acest lucru cu următorul exemplu:

    Int *p; //Creează un pointer if ((p = malloc(100 * sizeof(int))) == NULL) //Încercă să aloci dinamic memoria printf("Eșuat la alocarea memoriei!"); //În caz de eșec, afișați un mesaj, altfel //și în caz de succes pentru (int i = 0; i< 100; i++) //заполняем выделенную *(p + i) = i; //область памяти

    A doua linie din acest exemplu este exact cea pe care am menționat-o la începutul articolului.

    Într-un caz mai general, funcțiile care generează unele date, alocă dinamic memorie pentru aceasta, o completează cu aceste date și returnează adresa zonei alocate pot returna și NULL ca semn că datele nu au putut fi generate, de exemplu, din cauza la o eroare a parametrilor trecuți funcției.

    Valoarea NULL este de obicei atribuită unui pointer pentru a-l distinge de un pointer care conține adresa unei locații de memorie care poate fi accesată pentru a citi informații din sau pentru a scrie informații în ea. De exemplu, atunci când creați un pointer, îi puteți atribui imediat valoarea NULL . În viitor, codul poate verifica valoarea acestui indicator și imediat „înțelege” dacă adresa conținută în el poate fi accesată sau nu. Să ne uităm la un exemplu simplu:

    Int *p = NULL; //Creați un pointer p și atribuiți-i NULL... // Cod program, în care pointerul p poate... //fie (sau poate să nu fie!) atribuit o adresă... //unei variabile a de tip int if (p != NULL) //Dacă pointerul este non- null, printf("a= %d", *p); //apoi se imprimă valoarea variabilei a else //Altfel printf("p indică nicăieri!"); //ieșire Anunţ

    Un alt exemplu: pointerului i s-a atribuit adresa unei locații de memorie alocate dinamic. După ceva timp, memoria alocată a fost eliminată. Acum accesarea adresei stocate în pointer poate duce la consecințe imprevizibile. Pentru a evita acest lucru, pointerului i se atribuie valoarea NULL pentru a indica faptul că pointerul nu poate fi dereferențiat.

    Apropo, biblioteca funcție liberă() , care se ocupă cu eliberarea memoriei alocate dinamic și ia adresa zonei alocate ca argument, gestionează corect valoarea NULL. Astfel, dacă îi treceți un indicator nul, nu se va întâmpla nimic rău. Apropo, nu se va întâmpla absolut nimic!

    Într-o listă legată individual, fiecare nod, cu excepția ultimului, este conectat la următorul. ÎN implementare software nodurile listei sunt de obicei reprezentate prin variabile tip structural(pentru simplitate, vom numi și aceste variabile noduri), iar conexiunea menționată între noduri este implementată după cum urmează. Fiecare nod conține ca câmp un pointer către nodul care îl urmează. Excepție este ultimul nod al listei, al cărui pointer corespunzător nu are spre care să indice. Pare perfect rezonabil să îi atribui valoarea NULL.

    Acest indicator nul va indica faptul că nodul care îl conține este ultimul din listă. Această caracteristică este foarte convenabilă de utilizat atunci când iterăm prin toate nodurile unei liste într-o buclă: ne mutăm de la nod la nod până când „ne-am împiedicat” de un pointer nul. Acest lucru încheie ciclul.

    De exemplu, lăsați tipul de nod să fie descris după cum urmează:

    Struct node (int element; //Conținutul nodului este un întreg struct node *next; //Pointer la următorul nod);

    Apoi funcția de imprimare la linie separată Conținutul fiecărui nod ar putea arăta astfel:

    //Funcție care imprimă conținutul unei liste //Preia adresa primului nod al listei ca parametru void print (struct node *list) ( do printf("%d\n", list->element); while ((lista = lista-> urmatorul) != NULL);

    De îndată ce indicatorul către următorul nod este NULL, iterațiile se opresc.

După cum putem vedea, NULL poate fi folosit într-un program oriunde pot fi folosite adrese. NULL poate fi atribuit pointerilor, returnat de la funcții și transmis la funcții. Cu toate acestea, în acest din urmă caz, trebuie să vă asigurați că funcția „știe” cum să gestioneze corect NULL . De exemplu, funcția free() are această capacitate și cele de mai sus functia de imprimare() - Nu.

Dar ceea ce nu poți face este să dereferențiezi pointerii nuli! Comportamentul programului ca urmare a acestei operațiuni este imprevizibil. În orice caz, nu se poate aștepta nimic bun. Experimentele arată că atunci când utilizați compilatorul MinGW64 în Mediul Windows 7, sistemul de operare „ucide” imediat procesul care a încercat să acceseze adresa „interzisă”.

Să ne întrebăm: este posibil să facem fără macro-ul NULL, folosind în schimb o constantă care este valoarea ei? Desigur, este posibil, dar numai pentru asta trebuie să-l știi. Una dintre cele mai moduri simple aflați această constantă - imprimați NULL, de exemplu, după cum urmează:

Printf("NULL=%p", NULL);

Aici am folosit specificatorul de format %p, care este destinat pentru afișarea adreselor. Dacă utilizați compilatorul MinGW64, rezultatul executării acestei linii va fi următorul:

NULL=00000000

Ei bine, s-a dovedit că, potrivit macar, în cazul lui MinGW64, NULL este zero!

O altă modalitate de a seta valoarea unei macrocomenzi la NULL este să cauți definiția acesteia în fișierul stdlib.h (presupunând că fișierul este disponibil). Să ne întoarcem din nou la compilatorul MinGW64. Fișierul stdlib.h inclus în acest compilator conține următoarele definiții macro (pentru a fi mai ușor de citit, am indentat începuturile liniilor; acestea nu sunt prezente în original):

#ifndef NULL #ifdef __cplusplus #ifndef _WIN64 #define NULL 0 #else #define NULL 0LL #endif /* W64 */ #else #define NULL ((void *)0) #endif #endif

Deoarece macrocomanda __cplusplus nu este definită când se utilizează limbajul C99, definiția macrocomenzii NULL dată în linia 9 este relevantă pentru noi. După cum putem vedea, NULL este definit ca zero redus la tip void * .

Este logic să întrebăm: de ce avem nevoie de macro-ul NULL? Nu este mai simplu să folosești zero peste tot și întotdeauna în schimb? Răspuns: Totul este despre portabilitatea codului. Ipotetic, se poate presupune existența unor compilatoare în care NULL are o altă valoare decât zero (deși nu am văzut astfel de compilatoare). Folosirea macrocomenzii NULL va permite diferiților compilatori, la compilarea aceluiași cod, să înlocuiască această macrocomandă cu valoarea ei care corespunde unui anumit compilator. Dacă utilizați zero în loc de NULL, atunci în acele compilatoare în care NULL != 0, codul compilat s-ar putea să nu funcționeze, iar în cel mai rău caz, executarea lui poate duce la deteriorarea datelor aflate în memorie care nu au legătură cu programul. fiind executat.

Personal, nu-mi pasă deloc de portabilitatea codului meu C99. Singura mea preocupare este compatibilitatea lui cu compilatorul pe care îl folosesc, și anume MinGW64. Cât despre NULL, mi se pare incomod utilizarea lui. Este mult mai frumos, de exemplu, să scrieți „dacă (p)” decât „dacă (p != NULL)”. De aceea nu folosesc niciodată NULL, făcându-mă bine cu zero. Mai mult, nici măcar nu arunc zero pentru a tasta void * , deoarece o astfel de distribuție este efectuată automat de compilator.

Sper că cititorul a învățat ceva util din acest articol și a decis dacă ar trebui să folosească macro-ul NULL sau nu.

Secțiunea este foarte ușor de utilizat. În câmpul oferit, trebuie doar să introduceți cuvântul potrivit, și vă vom oferi o listă cu valorile sale. Aș dori să menționez că site-ul nostru oferă date de la surse diferite– dicționare enciclopedice, explicative, de formare a cuvintelor. Aici puteți vedea și exemple de utilizare a cuvântului pe care l-ați introdus.

Găsi

Înţeles null

Wikipedia

NULL (SQL)

NULîn Sisteme de management al bazelor de date, care poate fi scris într-un câmp dintr-un tabel al bazei de date. NULL corespunde conceptului de „câmp gol”, adică „un câmp care nu conține nicio valoare”. Introdus pentru a face distincția între câmpurile bazei de date valori goale(de exemplu, un șir de lungime zero) și valorile lipsă.

NULînseamnă absență, informații necunoscute. NULL nu este o valoare în adevăratul sens al cuvântului: prin definiție, înseamnă absența unei valori și nu aparține niciunui tip de date. Prin urmare, NULL nu este egal nici cu valoarea logică FALSE, nici cu linie goală, nu zero. Când comparăm NULL cu orice valoare, rezultatul va fi NULL, nu FALSE și nu 0. Mai mult, NULL nu este egal cu NULL!

NUL (C)

NULîn limbajele de programare C și C++ - o macrocomandă declarată în fișier antet stddef.h . O constantă pointer nulă este o expresie constantă întreagă cu valoarea 0 sau aceeași expresie transformată în void *. O constantă de pointer nulă turnată către orice tip de pointer este indicator nul. Este garantat că un pointer nul nu este egal cu un pointer către orice obiect sau funcție. Este garantat că oricare doi pointeri nuli sunt egali. Dereferențiarea unui pointer nul este o operație cu comportament nedefinit.

Cu alte cuvinte, implementarea oferă o valoare specială - o constantă pointer nulă, care poate fi atribuită oricărui pointer și un astfel de pointer, atunci când este comparat, nu va fi egal cu niciun pointer „corec”. Adică, putem presupune că un pointer nul nu conține o adresă de memorie validă.

NUL

  • NUL- un pointer nul în limbajele de programare C și C++.
  • NULL (SQL)- o valoare specială, ceea ce înseamnă că valoarea câmpului nu este definită.

„VKontakte” este de departe cea mai convenabilă resursă în limba rusă, care nu este doar cea mai populară rețea socială, ci și un serviciu pentru ascultarea înregistrărilor audio și vizionarea videoclipurilor. Există o bibliotecă imensă aici compoziții muzicale, cărți audio, clipuri, filme și alte lucruri bune. Desigur, toți participanții înregistrați se bucură de oportunitățile oferite. Cu toate acestea, în În ultima vreme Au început să apară tot mai des plângeri cu privire la „glumele” pe care le face sistemul. Toate se rezumă la o greșeală Eroare JavaScript„VKontakte”, care interferează operatie normala playere video și audio.

Tipuri de erori JavaScript: o scurtă prezentare generală

Această nenorocire poate strica în mod semnificativ starea de spirit a celor care așteptau cu nerăbdare să se bucure de muzică plăcută sau să-și petreacă timpul urmărind un film de seară. Pentru a preveni acest lucru, să ne dăm seama cum să remediați singur eroarea JavaScript VKontakte. Sunt cateva opțiuni posibile rezolvarea problemelor.

Mai întâi, să vedem ce tip de erori pot apărea:

  • initAddMedia este nedefinit;
  • nu poate citi proprietatea „lungime” a nedefinite;
  • nu poate converti „opts.photos” în obiect;
  • nu poate citi proprietatea parentNode;
  • actualaudioid sau pur și simplu nedefinit.

Aceasta nu este deloc o listă exhaustivă mesaje posibile despre eroare, dar cele mai comune opțiuni sunt enumerate aici. În continuare vom lua în considerare metode existente deciziile lor.

Modalități de a trata erorile JavaScript

Dacă, atunci când încercați să activați sunetul sau să deschideți un fișier video, nimic nu funcționează și un mesaj de ură apare în colțul de sus al ecranului care vă spune ce s-a întâmplat Eroare JavaScript Eroare „VKontakte”, apoi încercați mai întâi următoarele:

  1. Utilizați un browser diferit. De exemplu, dacă este activat acest moment Dacă lucrați în Opera, atunci instalați Google Chrome sau Mazila. Poate că problema va dispărea.
  2. Apăsați comanda rapidă de la tastatură Ctrl+F5. În unele cazuri, această acțiune șterge eroarea.
  3. Scanați-vă computerul folosind un antivirus (Dr.Web sau altul). Nu uitați să actualizați mai întâi programul.
  4. Deschideți meniul „Setări mele” de pe pagina dvs. VKontakte și bifați caseta de lângă „Folosește întotdeauna” conexiune sigură„. Poate că și asta va ajuta.
  5. Ștergeți cache-urile browserelor dvs., ștergeți memoria cache Java.

Dacă niciunul dintre acești pași nu a ajutat și eroarea JavaScript VKontakte vă împiedică în continuare să utilizați toate funcțiile resursei, atunci următoarea soluție la problemă ar trebui să funcționeze.

Detectarea și eliminarea unui virus din fișierul gazdei sistemului

Probabil, cauza unui astfel de incident neplăcut sunt virușii care s-au strecurat în sistemul dumneavoastră computerizat. Ei lucrează cu viclenie: fac intrări în sistem, drept urmare accesul la unele site-uri este blocat (de unde eroarea JavaScript „VKontakte” atunci când încercați să utilizați acest serviciu). Prin urmare, pentru a deschide accesul, trebuie să curățați fișierul corespunzător, adică gazde. Acest lucru se poate face automat sau mod manual. Vom vedea cum să o faci singur.

Instrucțiuni pentru curățarea fișierului „gazde”.

  1. Accesați „Computerul meu” și deschideți folderul de sistem Windows/sistem32. Conține un folder de drivere, în care avem nevoie de cel numit etc. Printre fișierele stocate în acest ultim folder vor fi gazdele de care avem nevoie. Deschideți-l folosind Notepad sau editor de text WordPad.
  2. Veți vedea conținutul acestui fișier ca introducerea textului. În acest caz, într-un fișier sănătos (neinfectat cu un virus), intrarea este limitată la următoarele date: 127.0.0.1.localhost.
  3. Dacă descoperiți că, pe lângă textul specificat, există și alte intrări în fișier, atunci acesta nu este altceva decât gunoi lăsat de un virus viclean. El este cel care împiedică programele de pe site-ul web VKontakte să funcționeze normal, blocând accesul la ele.
  4. Trebuie să scăpăm de înregistrările inutile. Ștergem complet documentul (pentru a securitate mai bună), A mesajul corect reintra. Salvați modificările și închideți editorul.
  5. Acum trebuie să reporniți computerul, după care eroarea ar trebui să dispară. Încercați să accesați pagina rețelei sociale și să ascultați fișiere audio, precum și să deschideți videoclipuri. Eroare JavaScript „VKontakte” nu mai apare.

Această metodă este cea mai fiabilă, dar în același timp destul de simplă. De obicei, ajută la rezolvarea problemelor legate de erorile JavaScript. Pentru a preveni astfel de probleme, verificați funcționarea antivirusului. Dacă este necesar, actualizați-l sau instalați unul nou, deoarece protecţie fiabilă calculatorul este baza funcţionare neîntreruptă, inclusiv atunci când utilizați site-uri de pe World Wide Web.

Alte tipuri de erori JavaScript „VKontakte”

Pe lângă problemele cu fișierele audio și video, aceasta rețea socială vă poate „vă rog” cu o serie de alte erori JavaScript „VKontakte”, chiar mai ridicole. Ce trebuie făcut dacă dialogurile nu se deschid, mesajele nu sunt trimise și comentariile nu sunt atașate la fotografii - se afișează o eroare addEventListener; peretele nu funcționează - peretele nu este definit; fără acces la alții funcții esențiale. Această listă este doar o parte din problemele sau defecțiunile sistemului, care fac dificilă utilizarea resursei populare.

Opțiuni de depanare a erorilor JavaScript

Indiferent de eroarea JavaScript specifică pe care o întâmpinați, pașii pentru a o rezolva sunt aceiași. De regulă, este suficient să utilizați una dintre opțiunile descrise mai sus. Merită în special să acordați atenție reinstalării/modificării browserului utilizat și curățării fișierului „gazde”.

De asemenea, puteți încerca să resetați setați parametri browser (Proprietăți/fila Avansat). După aceasta, va trebui să reporniți computerul. În unele cazuri, această acțiune simplă vă ajută să scăpați de eroarea pop-up. În plus, este necesar să se verifice toate sistem de operare, poate că se ascund în altă parte. Pentru a face acest lucru, trebuie să aveți un antivirus puternic și care funcționează corespunzător.

Ultima soluție

Dacă totul este în regulă cu mașina și sistemul dvs., dar când încercați să utilizați unele funcții ale unei resurse populare, apare încă o eroare JavaScript „VKontakte”, cum să o remediați în acest caz? Problema este cel mai probabil în serviciul în sine. Cel mai cea mai bună soluție va cere ajutor de la suport tehnic site-ul web „VKontakte” și explicați situația. Probabil că vor putea rezolva această neînțelegere.

Cel mai important sfat este să faceți tot ce vă stă în putere pentru a vă asigura siguranta deplina a lui sistem informatic. Actualizați-vă antivirusul în mod regulat și, dacă este posibil, utilizați cel mai mult ultimele versiuni browsere. Apoi erori similare va fi redusă la minimum.

Când lucrați cu orice date, din când în când trebuie să indicați cumva absența acesteia. Începătorii folosesc adesea valoarea în acest scop fals, care, în esență, nu este absența datelor, ci anumit tipul valorii boolean. Pentru a marca cumva incertitudine sau lipsa de date, există o semnificație specială nul. Despre fals, nulși așa mai departe, deja s-au spus multe și este extrem de greu să adaugi ceva original. Dar poate fi mult mai dificil să găsești o eroare cauzată de comportamentul neevident al acestor lucruri. Prin urmare, inspirat de un astfel de bug, cel mai elegant din palmaresul meu, am decis să scriu un mic cheat sheet pe acest subiect.

Nu voi supraîncărca postarea cu unele interesante, ci mai degrabă inutile. În schimb, voi ajunge direct la subiect și voi da un citat din, dedicat nul:

Valoare specială NULL reprezintă o variabilă fără valoare. NULL este singurul lucru sens posibil tip null. O variabilă este considerată nulă dacă:

  • i s-a atribuit constanta NULL.
  • nu i s-a atribuit încă niciun sens.
  • a fost eliminat folosind unset().

Până în acest punct, totul pare simplu, dar să rămână așa, atunci când lucrezi nul trebuie să respectați anumite reguli.

Operatii matematice cu nul

In toate operatii matematice nul se comportă similar int(0):

$a = nul; $a + 1; // int(1) $a - 1; // int(-1) $a * 1; // int(0) 1 / $a; // bool(fals)

Verificarea unei variabile pentru null

Pentru a afla exact ce conține o variabilă nul(adică nu conține nimic), trebuie să folosiți oricare functie speciala is_null() sau comparație identică === și orice alte metode nu vor funcționa:

// Verificare corectă pentru variabila nulă $a = nulă; is_null($a); // bool(true) $a === null; //bool(adevărat)

Verificarea expresiilor if nule, precum și în funcțiile empty() și isset().

Iată variabilele cu nul se comportă absolut previzibil, ca orice alte valori false (care în declarațiile if conduc la fals). Dar trebuie să ne amintim că acest lucru nu ne garantează că variabila conține exact nul:

// În declarațiile if, null este transformat în fals, ca toate celelalte valori false if($a) ( echo „Sigur, $a nu este nul!”; ) else ( echo „Mabye $a este nul.” ) // Testarea pentru empty() va returna true, dar nu garantează că variabila testată este nulă $a = null; gol($a); // bool(true) $a = ; gol($a); // bool(true) $a = ""; gol($a); // bool(true) $a = 0; gol($a); // bool(true) $a = false; gol($a); // bool(true) // Verificarea isset() va returna false nu numai pentru null, ci și pentru o variabilă nedefinită $a = null; isset($a); // bool(false) isset($undefined); //bool(fals)

Comparând două nule

În PHP, atât flexibil, cât și identic comparatie a doua nul se intoarce mereu fals , spre deosebire de multe alte platforme, unde compararea a două necunoscute returnează aceeași necunoscută (de ex. nul).

// PHP este sigur că două necunoscute sunt egale și chiar identice $a = null; $b = nul; $a == $b; // bool(true) $a === $b; //bool(adevărat)

Comportamentul null în comparație cu non-identitate cu tipul de date cast

PHP permite comparații nul-s nu numai între ele, ci și cu alte tipuri de date. În același timp, nu uitați că comparația flexibilă în PHP nu este tranzitivă, adică dacă două valori sunt egale cu a treia separat, nu garantează egalitatea lor între ele. Potrivit , comparație flexibilă nul folosind operatorul == Cu sensuri diferite returnează rezultate diferite:

// Pentru toate valorile false, comparația flexibilă cu nul returnează adevărat, cu excepția șirului „0” $a = ; $a == nul; // bool(true) $a = ""; $a == nul; // bool(true) $a = 0; $a == nul; // bool(true) $a = false; $a == nul; // bool(true) // Și când comparăm null cu șirul „0” vom obține false, deși null == false și „0” == false $a = „0”; $a == nul; // bool(false) // Pentru toate valorile non-false, o astfel de comparație va returna și false $a = 1; $a == nul; // bool(false) $a = "1"; $a == nul; //bool(fals)

Comparație cu nul folosind >, =,

Nu este pentru mine să judec cât de evident este acest lucru, dar în comparație cu numerele, nulul este întotdeauna mai mic decât ele. Convinge-te singur:

// În ciuda faptului că null == 0, se dovedește a fi mai mic decât orice număr null = -1) // bool(true) null >= 0 // bool(true) !(null >= 1) // bool (adevarat)

Nu pare nimic special, dar rezultă că, dacă este implicat null, poate trece o verificare aparent lipsită de sens:

// Din cauza acestui comportament, am prins odată un bug, din cauza căruia aproape că am crezut în magie :) $a = null; if($a = 0) ( ecou „$a = 0 în același timp!”; )

Comportament diferit de null în PHP, SQL și JavaScript

Dar acesta, după părerea mea, este cel mai rău lucru. Implementarea logicii de lucru cu celulele bazei de date în care valoarea este permisă nul, în diferite etape ale mișcării datelor de la server la utilizator (de exemplu, MySQL -> PHP -> JavaScript) comportament nul s-ar putea schimba.

Studiu nulîn JavaScript(și odată cu ea și misteriosul nedefinit) merită un articol separat. Principala diferență este că, în ciuda tipului de turnare, nulîn JavaScript nu este egal cu nimic în afară de el însuși nul si acesta nedefinit, deși funcționează similar în expresiile if fals. Și în comparație cu numerele, produce rezultate și mai amuzante decât în ​​PHP.

NULîn MySQL, de exemplu, este mult mai simplu. Este simplu pentru orice acțiuni cu nul(chiar și când comparăm două nul) se intoarce nul. Din punctul lui de vedere, orice acțiune cu necunoscutul va avea ca rezultat o altă necunoscută :)

O regulă simplă atunci când lucrați cu null care ajută la evitarea problemelor

De fapt, nu ar fi trebuit să citesc această postare. Ține cont de toate aceste nuanțe care platforme diferite interpretat diferit este o sarcină ingrată. Pentru a evita problemele cu nul Trebuie doar să vă amintiți o singură regulă:

Încercați să nu faceți asta cu nul fara pasi suplimentari: nu este nevoie să-l compari cu nimic, să-l adaugi sau să-l sortezi. Unde o variabilă pur teoretică cu nul se poate scurge în unii operatori, cea mai bună soluție ar fi să o verificați mai întâi cu o funcție is_null(). 08.04.2014