Operator Precedence for the C++ Programming Language
PDF version
Rank Operator Description Result Associativity ------------------------------------------------------------------------------------- A1 () Grouping exp N/A A2 :: Scope resolution L-R ------------------------------------------------------------------------------------- B1 () Function call rexp L-R B2 [] Subscript lexp L-R B3 . Structure member lexp L-R B4 -> Structure pointer member lexp L-R B5 ++ Postfix increment rexp L-R B6 -- Postfix decrement rexp L-R B7 typeid Run-time type information L-R B8 dynamic_cast Type cast lexp L-R B9 static_cast Type cast lexp L-R B10 const_cast Type cast lexp L-R B11 reinterpret_cast Type cast lexp L-R ------------------------------------------------------------------------------------- C1 ! Logical negate rexp R-L C2 ~ One's complement rexp R-L C3 + Unary plus rexp R-L C4 - Unary minus rexp R-L C5 ++ Prefix increment LEXP R-L C6 -- Prefix decrement LEXP R-L C7 * Indirection (dereference) lexp R-L C8 & Address of rexp R-L C9 sizeof Size in bytes rexp R-L C10 new Scalar dynamic mem allocation lexp R-L C11 new [] Array dynamic mem allocation lexp R-L C12 delete Scalar mem deallocation N/A R-L C13 delete [] Array mem deallocation N/A R-L C14 type() Type conversion (cast) rexp R-L ------------------------------------------------------------------------------------- D1 .* pointer-to-member (objects) L-R D2 ->* pointer-to-member (pointers) L-R ------------------------------------------------------------------------------------- E1 * Multiplication rexp L-R E2 / Division rexp L-R E3 % Integer remainder (modulo) rexp L-R ------------------------------------------------------------------------------------- F1 + Addition rexp L-R F2 - Subtraction rexp L-R ------------------------------------------------------------------------------------- G1 << Left shift rexp L-R G2 >> Right shift rexp L-R ------------------------------------------------------------------------------------- H1 > Greater than rexp L-R H2 >= Greater than or equal rexp L-R H3 < Less than rexp L-R H4 <= Less than or equal rexp L-R ------------------------------------------------------------------------------------- I1 == Equal to rexp L-R I2 != Not equal to rexp L-R ------------------------------------------------------------------------------------- J & Bitwise AND rexp L-R ------------------------------------------------------------------------------------- K ^ Bitwise exclusive OR rexp L-R ------------------------------------------------------------------------------------- L | Bitwise inclusive OR rexp L-R ------------------------------------------------------------------------------------- M && Logical AND rexp L-R ------------------------------------------------------------------------------------- N || Logical OR rexp L-R ------------------------------------------------------------------------------------- O ?: Conditional LEXP R-L ------------------------------------------------------------------------------------- P1 = Assignment LEXP R-L P2 += Add to LEXP R-L P3 -= Subtract from LEXP R-L P4 *= Multiply by LEXP R-L P5 /= Divide by LEXP R-L P6 %= Modulo by LEXP R-L P7 <<= Shift left by LEXP R-L P8 >>= Shift right by LEXP R-L P9 &= AND with LEXP R-L P10 ^= Exclusive OR with LEXP R-L P11 |= Inclusive OR with LEXP R-L ------------------------------------------------------------------------------------- Q throw throw exception rexp R-L ------------------------------------------------------------------------------------- R , Comma rexp L-R -------------------------------------------------------------------------------------
ASCII Characters
Common non-printing control characters
----------------------------------------------------
0 NUL
7 Bell
8 Backspace
9 Tab
10 Line feed
13 Carriage return
26 End of file (Ctrl-Z)
27 [Esc] (Escape key)
ASCII characters (only 32-127 are standard)
----------------------------------------------------
32 64 @ 96 ` 128 € 160 192 + 224
33 ! 65 A 97 a 129 � 161 ¡ 193 - 225 á
34 " 66 B 98 b 130 ‚ 162 ¢ 194 - 226 A
35 # 67 C 99 c 131 ƒ 163 £ 195 + 227 d
36 $ 68 D 100 d 132 „ 164 ¤ 196 - 228 O
37 % 69 E 101 e 133 … 165 ¥ 197 + 229 ¢
38 & 70 F 102 f 134 † 166 ¦ 198 Ý 230 æ
39 ' 71 G 103 g 135 ‡ 167 § 199 Ý 231 “
40 ( 72 H 104 h 136 ˆ 168 ¨ 200 + 232 ™
41 ) 73 I 105 i 137 ‰ 169 ª 201 + 233 E
42 * 74 J 106 j 138 Š 170 ª 202 - 234 U
43 + 75 K 107 k 139 ‹ 171 « 203 - 235 „
44 , 76 L 108 l 140 Œ 172 ¬ 204 Ý 236 8
45 - 77 M 109 m 141 � 173 205 - 237 ”
46 . 78 N 110 n 142 Ž 174 ® 206 + 238 †
47 / 79 O 111 o 143 � 175 ¯ 207 - 239 n
48 0 80 P 112 p 144 � 176 Ý 208 - 240 =
49 1 81 Q 113 q 145 ‘ 177 Ý 209 - 241 ñ
50 2 82 R 114 r 146 ’ 178 Ý 210 - 242 =
51 3 83 S 115 s 147 “ 179 Ý 211 + 243 =
52 4 84 T 116 t 148 ” 180 Ý 212 + 244 (
53 5 85 U 117 u 149 • 181 Ý 213 + 245 )
54 6 86 V 118 v 150 – 182 Ý 214 + 246 ö
55 7 87 W 119 w 151 — 183 + 215 + 247 ~
56 8 88 X 120 x 152 ˜ 184 + 216 + 248 ø
57 9 89 Y 121 y 153 ™ 185 Ý 217 + 249 ú
58 : 90 Z 122 z 154 š 186 Ý 218 + 250 ú
59 ; 91 [ 123 { 155 › 187 + 219 Ý 251 v
60 < 92 \ 124 | 156 œ 188 + 220 _ 252 n
61 = 93 ] 125 } 157 � 189 + 221 Ý 253 ý
62 > 94 ^ 126 ~ 158 P 190 + 222 Ý 254 Ý
63 ? 95 _ 127 Ý 159 Ÿ 191 + 223 _ 255
Common printf formatting codes
%c - characters %s - strings (NUL-terminated C strings) %d, %i - integers %f - floating point (float and double) %g - floating point (minimum digits, float and double) %e - scientific notation (float and double) %p - pointers (displays in hex) %x - hexadecimal integers %o - octal integers %u - unsigned integers %ld, %li - long integers %lu - unsigned long integers %hd, %hi - short integers %hu - unsigned short integers Reading (scanf) double: %lf Reading/writing long double: %Lf