Aquesta és una llista d'operadors en els llenguatges de programació C i C++. Tots els operadors (excepte typeof) llistats existeixen en C++. Cal tenir en compte que C no admet la sobrecàrrega de l'operador.
Quan no està sobrecarregat, per als operadors &&, ||, i , (l'operador de coma), hi ha un punt de seqüència després de l'avaluació del primer operand.
C++ també conté els operadors de conversió de tipus const_cast, static_cast, dynamic_cast i reinterpret_cast. El format d'aquests operadors significa que el seu nivell de precedència no és important.
La majoria dels operadors disponibles en C i C++ també estan disponibles en altres llenguatges de la família C com ara C#, D, Java, Perl i PHP amb la mateixa precedència, associativitat i semàntica.
Taula Als efectes d'aquestes taules, a, b i c representen valors vàlids (literals, valors de variables o valor de retorn), noms d'objectes o valors l, segons correspongui. R, S i T representen qualsevol tipus, i K un tipus de classe o tipus enumerat.
Operadors aritmètics Tots els operadors aritmètics existeixen en C i C++ i es poden sobrecarregar en C++.
+OperadorSintaxiAddicióa + bSubstraccióa - bIncrement unitari +aDecrement unitari -aMultiplicacióa * bDivisióA / bMòdula % bIncrementa++Decrementa--
Operadors de comparació/operadors relacionals Tots els operadors de comparació es poden sobrecarregar en C++. Des de C++20, l'operador de desigualtat es genera automàticament si es defineix operator== i els quatre operadors relacionals es generen automàticament si es defineix operator<=>. OperadorSintaxiIgual aa == bNo igual aa != bMés gran quea > bMés petit quea < bMés gran o igual quea >= bMés petit o igual quea <= bTriple comparacióa <=>b
Operadors lògics Tots els operadors lògics existeixen en C i C++ i es poden sobrecarregar en C++, tot i que es desaconsella la sobrecàrrega de l'I lògic i l'OR lògic, perquè com a operadors sobrecarregats es comporten com a crides de funcions ordinàries, la qual cosa significa que els seus dos operands s'avaluen, de manera que perden la seva propietat d'avaluació de curtcircuits ben utilitzada i esperada. Nom de l'operadorSintaxiExemples de prototips en C++Com a membre de KDefinicions fora de classeNegació lògica (NO)! a not abool K :: operator ! ();bool operator ! (K a );I lògica && b a and bbool K :: operator && (S b );bool operator && (K a , S b );OR lògica || b a ??!??! b
a or b
Operadors per bits Tots els operadors de bits existeixen en C i C++ i es poden sobrecarregar en C++. Nom de l'operadorSintaxiExemples de prototipsCom a membre de KDefinicions fora de classeBit a bit NO~ a ?? - a compl aR K :: operator ~ ();R operator ~ (K a );I per bitsa & b a bitand bR K :: operator & (S b );R operator & (K a , S b );O per bitsa | b a ??! b a bitor bR K :: operator | (S b );R operator | (K a , S b );XOR bit a bita ^ b a ?? ' b a xor bR K :: operator ^ (S b );R operator ^ (K a , S b );
Operadors d'assignació Totes les expressions d'assignació existeixen en C i C++ i es poden sobrecarregar en C++.
Per als operadors donats, la semàntica de l'expressió d'assignació combinada incorporada a ⊚= b és equivalent a a = a ⊚ b, excepte que a només s'avalua una vegada. OperadorSintaxiAssignació directaa = bAssignació sumaa += bAssignació restaa -= bAssignació multiplicacióa *= bAssignació divisióa /= b
Precedència de l'operador A continuació es mostra una taula que enumera la precedència i l'associativitat de tots els operadors en els llenguatges C i C++. Els operadors es mostren de dalt a baix, amb precedència descendent. La precedència descendent fa referència a la prioritat de l'agrupació d'operadors i operands. Tenint en compte una expressió, un operador que apareix en alguna fila s'agruparà abans de qualsevol operador que aparegui en una fila més avall. Els operadors que es troben a la mateixa cel·la (pot haver-hi diverses files d'operadors llistats en una cel·la) s'agrupen amb la mateixa precedència, en la direcció donada. La prioritat d'un operador no es veu afectada per la sobrecàrrega.
La sintaxi de les expressions en C i C++ s'especifica mitjançant una gramàtica d'estructura de frase. La taula que es dona aquí s'ha deduït de la gramàtica. Per a l'estàndard ISO C 1999, la secció 6.5.6 nota 71 estableix que la gramàtica C proporcionada per l'especificació defineix la precedència dels operadors C i també estableix que la precedència de l'operador resultant de la gramàtica segueix de prop la secció de l'especificació. encàrrec:
"La sintaxi [C] [és a dir, gramàtica] especifica la precedència dels operadors en l'avaluació d'una expressió, que és el mateix que l'ordre de les subclàusules principals d'aquesta subclàusula, la precedència més alta primer."
Referències
Categoria:Llenguatge de programació C