Gotcha

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În programare, un gotcha este o caracteristică a unui program sau a unui limbaj de programare , care funcționează într-un mod care este formal corect - adică respectă sintaxa limbajului - dar care nu este ceea ce se așteaptă de la program, în intențiile programatorului . Acest lucru este înșelător, deoarece un astfel de comportament este ușor de reprodus și complet neașteptat.

Termenul este o denaturare a pronunției expresiei englezești I got you , care în acest context ar putea fi tradusă ca „I caught you”. În acest sens, o interpretare acceptabilă în limba italiană ar putea fi o „capcană”.

Gotcha în limbajul C.

Operator de misiune

De exemplu, într-un program C , când scriem instrucțiunea:

 dacă ( a = b )
    printf ( "Hello World \ n " );

Programul se va imprima pe ecran șirul de caractere „Hello World“ , numai în cazul în care b este diferit de fals, din moment ce atribuie programului la valoarea b, atunci moneda. De fapt, în C, ca în multe alte limbi, operatorul de atribuire ( = ) este distinct de operatorul de comparație ( == ).

Probabil că programatorul intenționa să scrie:

 if ( a == b )
    printf ( "Hello World \ n " );

care în schimb evaluează dacă valoarea a este egală cu cea a valorii b și, dacă da, imprimă șirul „Hello World”.

Acesta este exact cazul cu un „gotcha”.

Apel la funcție

Alt exemplu

 / * Numele fișierului: fiftytwo.c * /
#include <stdio.h>

foo () {
   printf ( "42! \ n " );
}

int main () {
    printf ( „Voi scrie '42' mai jos: \ n " );
    foo ;
    printf ( „Cred că am scris„ 42 ”, dar nu sunt sigur ... \ n  );
    retur 0 ;
}

Programul, după ce a fost compilat și executat, va produce ca ieșire:

 $ ./fortytwo
Mai jos voi scrie „42”:
Cred că am scris „42”, dar nu sunt sigur ...

Ce expresie foo; face - contraintuitiv pentru cei care nu sunt familiarizați cu limba - este de a returna adresa de memorie a funcției foo . Programatorul intenționa probabil să efectueze un apel funcțional :

 foo ();

unde parantezele indică un apel de funcție fără argumente.

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT