Saturday, October 17, 2015

Hirarki Operator Bahasa C

Hirarki operator adalah urutan prioritas pengerjaan sebuah operator. Dalam bahasa C setiap operator memiliki hirarki yang berbeda mulai dari yang tertinggi(highest) sampai terendah (lowest). Operator dengan hirarki lebih tinggi akan dikerjakan lebih dahulu dibanding dengan operator dengan hirarki terendah. Dengan memahami hirarki masing-masing operator ini, diharapkan tidak terjadi kesalahan saat pembuatan program.

Operator dengan hirarki tertinggi adalah operator scope resolution, namun operator ini hanya dipakai pada pemrograman C++. Pada urutan kedua terdapat beberapa operator diantaranya yang sering kita pakai adalah operator ( ) atau sepasang tanda kurung. Operator ini berfungsi memisahkan beberapa operasi bilangan. Artinya dengan menggunakan tanda kurung maka proses operasi ilangan akan dikerjakan tiap-tiap kelompok meski masing-masing kelompok tidak mempedulikan hirarki operatornya.

Contoh penggunaan hirarki operator


5+3*2+3=14

Pada contoh diatas kita membuat sebuah operasi bilangan dengan operator tambah (+) dan kali (*). Jika dihitung, maka operasi bilangan diatas menghasilkan nilai 14. Urutan pengerjaannya adalah operator perkalian (*) yang memiliki hirarki lebih tinggi dari operator penjumlahan akan dikerjakan lebih dahulu. Jadi 3 *2 akan dikerjakan dulu dan menghasilkan nilai 6. Kemudian nilai 6 ini dijumlahkan dengan 5 dan 3 menghasilkan nilai 14.

(5+3) * (2+3) = 40

Kemudian kita menambahkan sebuah operator yang memiliki hirarki lebih tinggi yaitu sepasang tanda kurung ( ) pada kedua operasi penjumlahan, (5+3) dan (2+3). Dari operasi bilangan diatas kita akan mendapatkan nilai 40, berbeda dari hasil perhitungan sebelumnya yang menghasilkan nilai 14. Hal ini karena operasi 5+3 dan 2+3 yang berada didalam kurung dikerjakan lebih dahulu dibanding operasi perkalian. Jadi perhitungannya menjadi 8*5 dan menghasilkan nilai 40.

Berikut ini hirarki operator dalam bahasa C selengkapnya:
Prioritas Operator Deskripsi Associativity
1
highest
:: Scope resolution (C++ only) None
2 ++ Suffix increment Kiri ke kanan
-- Suffix decrement
() Function call
[] Array subscripting
. Element selection by reference
-> Element selection through pointer
typeid() Run-time type information (C++ only)
const_cast Type cast (C++ only)
dynamic_cast Type cast (C++ only)
reinterpret_cast Type cast (C++ only)
static_cast Type cast (C++ only) (
3 ++ Prefix increment Kanan ke kiri
-- Prefix decrement
+ Unary plus
- Unary minus
! Logical NOT
~ Bitwise NOT (One's Complement)
(type) Type cast
* Indirection (dereference)
& Address-of
sizeof Size-of
new, new[] Dynamic memory allocation (C++ only)
delete, delete[] Dynamic memory deallocation (C++ only)
4 .* Pointer to member (C++ only) Kiri ke kanan
->* Pointer to member (C++ only)
5 * Multiplication Kiri ke kanan
/ Division
% Modulo (remainder)
6 + Addition Kiri ke kanan
- Subtraction
7 << Bitwise left shift Kiri ke kanan
>> Bitwise right shift
8 < Less than Kiri ke kanan
<= Less than or equal to
> Greater than
>= Greater than or equal to
9 == Equal to Kiri ke kanan
!= Not equal to
10 & Bitwise AND Kiri ke kanan
11 ^ Bitwise XOR (exclusive or) Kiri ke kanan
12 | Bitwise OR (inclusive or) Kiri ke kanan
13 && Logical AND Kiri ke kanan
14 || Logical OR Kiri ke kanan
15 ?: ?:) Kanan ke kiri
16 = Direct assignment Kanan ke kiri
+= Assignment by sum
-= Assignment by difference
*= Assignment by product
/= Assignment by quotient
%= Assignment by remainder
<<= Assignment by bitwise left shift
>>= Assignment by bitwise right shift
&= Assignment by bitwise AND
^= Assignment by bitwise XOR
|= Assignment by bitwise OR
17 throw Throw operator (exceptions throwing, C++ only) Kanan ke kiri
18
lowest
, Comma Kiri ke kanan

0 komentar

Post a Comment