Кіріспе

Екі компьютерлік тілде де ұқсас синтаксис. Бұл C және C++ бағдарламалау тілдеріндегі операторлардың тізімі. Аталған барлық операторлар (typeof-тан басқа) C++-да кездеседі; "C-ге кіреді" бағанында оператор C тілінде де бар-жоғы көрсетілген. C тілі операторларды жүктеуді (overloading) қолдамайды. Жүктемелмеген жағдайда, &&, || және , (үтір операторы) операторлары үшін бірінші операндтың бағаланғаннан кейін реттілік нүктесі болады. C++ сонымен қатар типті түрлендіру операторларын қамтиды: const_cast, static_cast, dynamic_cast және reinterpret_cast. Бұл операторлардың форматталуы олардың басымдық деңгейінің маңызды еместігін көрсетеді. C және C++ тілдерінде қол жетімді көптеген операторлар C#, D, Java, Perl және PHP сияқты басқа C отбасы тілдерінде де бірдей басымдықпен, байланыстырумен (associativity) және мағынасымен (semantics) қолданылады.

Кестені

Осы кестелер мақсатында a, b және c жарамды мәндерді (тура мәндер, айнымалылардан алынған мәндер немесе қайтарылатын мәндер), объектілердің атауларын немесе l-мәндерін көрсетеді, жағдайға қарай. R, S және T кез келген типті немесе типтерді, ал K – сыныптық типті немесе тізімделген типті білдіреді. Кейбір операторлар диграфтар мен триграфтарды немесе операторлардың синонимдерін пайдаланады.

Бит бойынша операторлар

Барлық бит операторлары C және C++ тілдерінде бар және C++ тілінде жүктелуі мүмкін. Оператордың атауы Синтаксис Прототип мысалдары K мүшесі ретінде Сыныптан тыс анықтамалар Бітшалық ЖОҚ ~a Бітшалық ЖӘНЕ a & b Бітшалық НЕ a | b Бітшалық ЕХО a ^ b Бітшалық солға жылжыту арифметикалық жылжытуды қолданады (яғни, таңба кеңейтілуі), бірақ логикалық жылжыту да мүмкін. a >> b

Биттік және теңдік операторларының басымдылығын сынға алу

Биттік логикалық операторлардың басымдығы сынға ұшырады. Концепция бойынша, & және | операторлары * және + сияқты арифметикалық операторлар болып табылады. өрнегі синтаксистік тұрғыдан былай талданады: , ал өрнегі былай талданады: . Бұл жағдайда, қажет болған жағдайда қарағанда көбірек жақша қолдану қажет. Тарихи тұрғыдан алғанда, биттік және логикалық операторлар арасында синтаксистік ерекшелік болған жоқ. BCPL, B және алғашқы C тілдерінде операторлары болған жоқ. Оның орнына, олар "шындық мән контекстінде" қолданылуына байланысты әртүрлі мағынаға ие болды (яғни, Бульдік мән күтілген кезде, мысалы, логикалық оператор ретінде, ал биттік оператор ретінде әрекет етті). Бұл қолданыстағы жүйелермен кері үйлесімділікті сақтау үшін сақталды. Сонымен қатар, C++ (және C тілінің кейінгі нұсқаларында) үштік салыстыру операторынан басқа барлық теңдік операциялары bool типіндегі мәндерді қайтарады, олар концепция бойынша бір бит (1 немесе 0) болып табылады және сондықтан "биттік" операцияларға дұрыс жатпайды.