Professional Documents
Culture Documents
Hamtrongc
Hamtrongc
Hamtrongc
org/wiki/Operat ors_in_C_and_C%252B%252B
y l mt danh sch cc nh khai thc trong C v C + + ngn ng lp trnh . Tt c cc nh khai thc c lit k tn ti trong C + +, ct th t "bao gm C", a ra cho d mt nh iu hnh cng c mt trong C. Lu rng C khng h tr iu hnh qu ti. Khi khng b qu ti, cc nh khai thc & &, | |, v, ( du phy ), c mt im trnh t sau khi nh gi ca cc ton hng u tin. C + + cng c cha cc nh khai thc chuyn i loi hnh const_cast, static_cast, dynamic_cast, v reinterpret_cast khng c lit k trong bng cho ngn gn. Cc nh dng ca cc nh khai thc c ngha l mc u tin ca h l khng quan trng. Hu ht cc nh khai thc c sn trong C v C + + cng c sn trong cc ngn ng khc nh C # , Java , Perl v PHP vi c quyn u tin, associativity, v ng ngha.
Ni dung
[hide]
Bng 1
o o o o o o o
1,1 s hc cc nh khai thc 1.2 So snh cc nh khai thc / cc nh khai thc quan h 1.3 logic cc nh khai thc 1,4 bit cc nh khai thc 1,5 Hp cht chuyn nhng nh khai thc 1,6 thnh vin v con tr cc nh khai thc 1,7 Cc nh khai thc
2 iu hnh u tin
o o
[ sa ]Bng
i vi cc mc ch ca bng ny, a , b , v c i din gi tr hp l (literals, cc gi tr t cc bin, hoc gi tr tr v), cc tn i tng, hoc lvalues, khi thch hp. Overloadable c ngha l cc nh iu hnh l overloadable trong C + +. "Bao gm C" c ngha l nh iu hnh tn ti v c mt ngha ng ngha trong C (nh khai thc khng overloadable trong C).
[ sa ]cc
nh khai thc s hc
V d th nghim (T l bt k loi) Bao C Overloadable gm php trongC
Nh iu hnh tn
L thnh vin ca T
Bn ngoi nh
C bn chuyn nhng
a =b
N/A
Ngoi ra
a +b
Tr
a -b
+ a
Nh iu hnh + (cons
- a
T nh iu hnh - (co
Php nhn
a *b
Phng
a /b
a %b
TT:: nh
T nh
Tin t
++ a
Tng Hu t a ++ C C
T nh iu hnh + + (
Lu : C + + s dng int gi tham s cha c t tn phn bit gia tin t v hu t cc nh khai thc t
Tin t
-- a
St ln Hu t a -C C
T nh iu hnh - (T
Lu : C + + s dng int gi tham s cha c t tn phn bit gia tin t v hu t cc nh khai thc l
[ sa ]So
Bng
a == b
Khng bng
a != b
Ln hn
a > b
t hn
a < b
Ln hn hoc bng
a >= b
a <= b
nh khai thc hp l
Logic ph nh (khng)
! a
Logic AND
a && b
Logical OR [ sa ]bit
a || b
cc nh khai thc
Bit khng
~ a
Bit,
a & b
Bit OR
a | b
Bit XOR
a ^ b
a << b
a >> b
Nh iu hnh tn
V d th
Ngoi ra giao
a += b
Tr chuyn nhng
a -= b
a *= b
a /= b
a %= b
a &= b
a |= b
a ^= b
a <<= b
a >>= b
Nh iu hnh tn
C php
Overloadable
Mng subscript
a [ b ]
* a
&a
T * T:: nh iu h
a -> b
R * T:: nh iu h
a . b
Khng c
a ->* b
a .* b
Khng c
Khng c
a ( a1, a2 )
Comma
a , b
Ternary c iu kin
a ? b : c
Khng c
a :: b
Khng c
Khng c
Kch thc-
Khng c
Loi xc nh
Khng c
Khng c
Din vin
( type ) a
Phn b lu tr
new type
Phn b lu tr (mng)
new type [ n ]
Deallocate lu tr
delete a
Deallocate lu tr (mng)
delete[] a
Ghi ch:
1. ^ Trong bi cnh iostreams , nh vn thng tham chiu n <<v>> l "a n" hoc "chn dng" v "t" hoc "dng thc" cc nh khai thc, tng ng. 2. 3. Mt v d c th c tm thy trong "Thc hin iu hnh-> cho con tr thng minh" ca Scott Meyers. ^ Trong trng hp ni -> * nh iu hnh l lm vic ging nh thc hin mc nh, tham s R s l phng php con tr n mt phng php ca T lp hc v gi tr tr li phi c mt s loi i tng hm t sn sng c gi l (ch) cc thng s phng php. 4. ^ ngoc l khng cn thit khi kch thc ca mt gi tr, ch khi kch thc ca mt loi . Tuy nhin, chng thng c s dng bt k.
b b
[ sa ]iu
hnh u tin
Sau y ban chi c danh sch cc u tin v associativity tt c cc nh khai thc trong th mc C v C + + ngn ng (khi cc nh iu hnh cng tn ti trong Java , Perl , PHP v ngn ng khc nhiu gn y, u tin cc l nh rng [ c trch dn cn thit ]). Cc nh khai thc c lit k trn xung di, gim dn u tin. Gim dn u tin cp n cc u tin nh gi. Xem xt mt biu thc, mt nh iu hnh c lit k trn mt s dng s c nh gi trc khi cho bt k nh iu hnh c lit k trn mt hng di n. Cc nh khai thc trong cng mt t bo (c th c mt s hng ca cc nh khai thc c lit k trong mt t bo) c nh gi vi cng mt u tin, theo hng nht nh. u tin ca nh khai thc l khng b nh hng bi qu ti.
C php ca biu thc trong C v C + + c quy nh bi mt ng php ng cnh [ cn dn ngun ] Cc bng a ra y c suy ra t ng php. [ cn dn ngun ] i vi tiu chun ISO 1999 C, mc 6.5.6 lu 71 bang rng ng php C c cung cp bi c im k thut xc nh cc u tin ca cc nh khai thc C, v cng ni rng cc nh iu hnh u tin t ng php cht ch sau phn c im k thut t hng: "[C] c php [tc l, ng php quy nh c th cc u tin ca cc nh khai thc trong vic nh gi mt biu thc, m l ging nh th t ca cc im chnh ca subclause, cao nht c u tin u tin." Mt bng u tin, trong khi hu ht l y , khng th gii quyt mt vi chi tit. c bit, lu rng cc nh iu hnh ternary cho php bt k biu hin ty nh l ton hng trung ca n, d c lit k nh l c u tin cao hn v cc nh iu hnh giao du phy . Nh vy a ? b , c : d a ? b , c : d c hiu nh l a ? (b, c) : d a ? (b, c) : d , v khng phi l v ngha (a ? b), (c : d) . Ngoi ra, lu rng, ngay lp tc unparenthesized kt qu ca mt biu thc dn din vin C khng th l ton hng sizeof sizeof . Do , sizeof (int) * xc hiu nh l (sizeof(int)) * x v khng sizeof ((int) *x) .
u tin Nh iu hnh M t Associativity
::
++
Hu t tng
--
Hu t st ln
()
Chc nng gi
[]
Mng subscripting
->
typeid()
const_cast
dynamic_cast
static_cast
++
Tin t tng
--
Tin t st ln
Nht nguyn m
! 3 ~
Hp l khng
( type )
&
a ch
sizeof
Kch thc-
new , new[]
Cp pht b nh ng (C + + ch)
.* 4 ->*
Php nhn
phn chia
+ 6 -
Ngoi ra
tr
<< 7 >>
Bit li s thay i
<
<= 8 >
>=
==
Quan h = tng ng
!=
Quan h tng ng
10
&
Bit,
11
12
Bit OR (hoc l)
13
&&
Logic AND
14
||
Logical OR
15
?:
+=
-=
*=
16
/=
%=
<<=
>>=
&=
^=
|=
17
throw
18
Comma
[ sa ]Ghi
ch
Bng u tin xc nh th t rng buc trong biu thc chui, khi n khng phi l r rng quy nh bng du ngoc n.
V d, ++x*3 l m h m khng c mt s nguyn tc u tin (s). Bng u tin cho chng ta bit rng: x l 'b rng buc cht ch hn + + hn *, v vy bt c iu g + + (ngay by gi hoc sau , xem di y), n c phi n ch x (v x*3 3 ) , n tng ng vi ( ++x , x*3 ). Tng t nh vy, vi 3*x++ , ni mc d cc bi-sa cha + + c thit k hot ng sau khi cc biu hin ton b l nh gi, cc bng u tin lm cho n r rng rng ch x c tng ln (v khng 3*x ); n l chc nng tng ng mt ci g nh ( tmp=3*x , ++x , tmp ) vi tmp mt gi tr tm thi.
Tru tng ha vn u tin hay rng buc, hy xem xt s trn. Cng vic ca trnh bin dch gii quyt s vo mt biu thc, m trong cc nh khai thc nhiu nht nguyn (gi 3 + (.), 2 * (.), (.) + + V () [i].) ang cnh tranh rng buc y. Th t ca
bng u tin gii quyt cui cng ph biu hin h mi hnh khi: (.) (.) (.) [I] ch hnh y, + + hnh vi ch y [i], 2 hnh vi ch v y [ i] + + v 3 + hnh vi 'ch' ngy 2 () * ((y [i ])++). N l quan trng lu rng G biu hin tiu c hnh ng trn ca mi nh khai thc l r rng t cc bng u tin nhng KHI mi hnh vi iu hnh l khng gii quyt cc bng u tin; (.) Trong v d ny, cc + + nh iu hnh hnh vi ch v y [ i] theo cc quy tc u tin nhng mc rng buc mt mnh khng cho bit thi gian ca Suffix + + ((.) + + nh iu hnh hnh vi ch sau khi y [i] c nh gi trong biu thc). Nhiu ngi trong s cc nh khai thc c cha cc chui k t nhiu "tn" c xy dng t tn nh iu hnh ca mi k t. V d, += v = thng c gi l cng bng (s) v tr i bng (s),thay v "chuyn nhng bng cch thm nhiu chi tit v phn cng ca php tr" . Lin kt ca cc nh khai thc C v C + + c quy nh c th (trong tiu chun tng ng) bng mt ng php ngn ng yu t, ch khng phi l mt bng u tin. iu ny to ra mt s xung t tinh t. V d, trong C, c php cho mt biu thc iu kin l: hp l - HOC - biu hin? biu hin: c iu kin - biu hin trong khi C + + l: hp l - HOC - biu hin? - biu hin Do , cc biu hin: e = a <d? + +: a = d l phn tch c php khc nhau trong hai ngn ng. Trong C, biu thc ny l mt li c php, nhng trnh bin dch nhiu phn tch n nh l: e = ((a <d a + +: a) = d) m l mt li ng ngha, t kt qu ca biu thc iu kin (m c th l mt + +) khng phi l mt lvalue. Trong C + +, l phn tch c php nh: e = (a <d a + +: (a = d)) l mt biu thc hp l. biu hin: chuyn nhng
u tin ca cc nh khai thc hp l bitwise b ch trch [1 ] Khi nim, & v | l nh khai thc s hc nh + v *. Biu thc a & b == 7 l c php phn tch c php nh mt & (b == 7) trong khi biu thc a + b == 7 l phn tch c php nh (a, b +) == 7. iu ny i hi du ngoc n c s dng thng xuyn hn hn bnh thng.
[ sa ]C
+ + nh iu hnh t ng ngha
C + + nh ngha [1] t kha hnh ng nh b danh cho mt s nh khai thc and (&&), bitand (&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not (!), not_eq (!=), compl (~) xor and (&&), bitand
(&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not
. y c th c s dng chnh xc theo cng mt cch nh nhng biu tng m n thay th nh h khng phi l cc nh iu hnh di mt tn khc nhau, nhng b danh vn bn kh n gin cho tn (chui k t) ca nh iu hnh tng ng. V d, bitand c th c s dng thay th khng ch cc nh iu hnh bitwise nhng cn a ch ca nh iu hnh, v thm ch n c th c s dng xc nh kiu tham chiu (v d int bitand ref = n; ).
(!), not_eq (!=), compl (~)
ANSI C c im k thut lm cho tr cp cho cc t kha nh cc macro tin x l trong cc tp tin iso646.h iso646.h. i vi kh nng tng thch vi C, C + + cung cp cc tiu ciso646ciso646, bao gm trong khng c hiu lc .