Make your own free website on Tripod.com

OPERATOR

 OPERATOR ASSIGNMENT

            Yang termasuk operator assignment (pemberian nilai) adalah operator =.

Contoh :

            my_var  =  1234;

            my_var            :  nama dari suatu variabel

            1234                :  merupakan nilai yang akan diberikan ke variabel di sebelah kiri                                                  tanda

        tidak dibaca bahwa my_var sama dengan 1234, tetapi nilai 1234 diberikan ke variabel dengan nama my_var

        untuk operator ini, operasi dikerjakan dari arah kanan ke kiri

        operasi assignment ganda (multi-assignment) dapat terjadi pada bahasa C, dan dikerjakan dari arah kanan ke arah kiri.

            Contoh :

                        spock  =  ryker  =  kirk  =  24;

            Mula-mula kirk akan mendapat nilai 24, kemudian ryker akan mendapat nilai dari kirk, dan terakhir spock akan mendapat nilai dari ryker.

 

OPERATOR ARITMATIKA

            Yang termasuk operator aritmatika adalah   *, /, %, +, dan -.

Operasi pembagian pada bilangan integer akan membulatkan pecahan pada hasilnya.

Operasi  x % y akan menghasilkan sisa bila x tidak habis dibagi dengan y, dan akan menghasilkan 0 bila x habis dibagi dengan y.

Operator % tidak dapat digunakan pada tipe data float atau double.

Kedudukan operator binary + dan - lebih rendah bila dibandingkan dengan operator *, /, dan %.

 

OPERATOR PENAMBAHAN +

            Akan menjumlahkan nilai-nilai di sebelah kanan ke sebelah kiri dari tanda =.

Contoh :

            x = 20 + 4;

            income = salary + tax + bribes;

            20, 4, salary, tax, dan bribes merupakan operand dari operator + di atas.

        Operator ini merupakan operator binary, karena memerlukan 2 buah operand agar dapat menghasilkan suatu nilai.

 

OPERATOR PENGURANGAN -

            Akan mengurangkan nilai-nilai di sebelah kanan ke sebelah kiri dari tanda =.

Contoh :

            good = whole - bad;

            z = 100 - 45 -30;

                     Operasi ini akan dijalankan dari kiri ke kanan, sehingga urutannya :

                        z = (100 - 45) - 30;

                        z =       55       - 30;

                        z = 25;

        Merupakan operator binary.

 

OPERATOR TANDA -

            Operator tanda - digunakan untuk mengubah tanda / nilai aljabar dari suatu nilai.  Operator ini merupakan operator unary, karena hanya memerlukan sebuah operand.

Contoh :

            a = -4;

            b = -a;

 

OPERATOR PERKALIAN *

            Operator ini akan mengalikan nilai-nilai di sebelah kanan ke sebelah kiri dari tanda =.

Operator ini merupakan operator binary.

Contoh :

            x = 20 * 5;

            y = 3 * x;

 

OPERATOR PEMBAGIAN /

            Operator ini akan membagi nilai di sebelah kiri tanda / dengan nilai disebelah tanda / tersebut.

        Pembagian dengan tipe floating-point akan menghasilkan jawaban bertipe floating-point.

            Contoh :

                        x = 20.0 / 4;                 (x sama dengan 5.0)

                        y = 100 / 5.0;               (y sama dengan 20.0);

                        z = 6.25e2 / 5;              (z sama dengan 125.0);

        Pembagian dengan tipe integer akan menghasilkan jawaban bertipe integer karena hasil fraksionalnya dibuang, proses ini disebut truncation.

            Contoh :

                        5 / 4 akan menghasilkan jawaban 1

                        100 / 30 akan menghasilkan jawaban 3

 

OPERATOR RELASI DAN LOGIKA

            Yang termasuk operator relasi adalah  >, >=, <, dan <=.

Operator-operator di atas mempunyai kedudukan yang sama, artinya operator yang ditemukan pertama kali akan dikerjakan lebih dahulu.

Selain operator relasi, ada pula operator kesamaan yang kedudukannya lebih rendah dibandingkan dengan operator relasi.

Operator kesamaan tersebut adalah == dan !=.

Operator relasi dan operator kesamaan mempunyai kedudukan yang lebih rendah bila dibandingkan dengan operator aritmatika.

Dengan demikian, ekspresi i < limit - 1 akan dianggap sebagai i < (limit - 1).

Yang termasuk operator logika adalah operator && (AND) dan || (OR).  Ekspresi

yang dihubungkan dengan operator logika && dan || akan dikerjakan dari arah kiri ke kanan, dan proses evaluasi akan segera berhenti pada saat nilai true atau false dari ekspresi tersebut diketahui.

Kedudukan operator && lebih tinggi daripada operator ||, dan kedua operator logika tersebut kedudukannya lebih rendah dibandingkan dengan operator relasi dan operator kesamaan.

Contoh :

            Pada ekspresi

                        i < limit - 1 && (c = getchar()) != '\n' && c != EOF

            tidak diperlukan lagi adanya kurung tambahan, karena akan dianggap sebagai    ( i < (limit - 1) ) && ( (c = getchar()) != '\n' ) && ( c != EOF )

            Tanda kurung hanya diperlukan pada (c = getchar()) != '\n', karena kedudukan operator kesamaan != lebih tinggi dibandingkan dengan operator assignment =. Bila pada ekspresi tersebut, nilai i tidak lebih kecil dari limit - 1, maka dua buah kondisi berikutnya, yaitu (c = getchar()) != '\n' dan c != EOF tidak akan pernah dikerjakan, karena nilai kondisi pertama sudah false, sehingga nilai ekspresi keseluruhan sudah dapat diketahui.  (catatan : untuk menghasilkan true dari suatu ekspresi yang dihubungkan dengan operator AND (&&), maka semua kondisi harus bernilai true pula).

 

Suatu ekspresi yang bernilai true akan diberi nilai numerik 1, dan ekspresi yang bernilai false akan diberi numerik 0.

Operator negasi ! akan mengubah nilai dari operand yang bukan nol menjadi nol, dan nilai operand nol menjadi 1.

Contoh penggunaan operator negasi yang bersifat unary ini adalah :

            if ( !valid )

Bentuk di atas lebih umum digunakan oleh programmer bahasa C bila dibandingkan dengan bentuk   if ( valid == 0 )

 

Tabel operator logika :

 

Operator

Fungsi

Keterangan

!

NOT

Pembalik / inverter

&&

AND

Salah satu salah semua salah

||

OR

Salah satu benar semua benar

 

BENTUK OPERATOR ARITMATIKA LAIN

            Pada bahasa C terdapat operator aritmatika khusus yang dapat menambahkan atau mengurangkan suatu nilai berdasarkan suatu kelipatan tertentu.

Contoh :

            Bentuk  N = N + 1  dapat dituliskan secara lebih singkat menjadi bentuk N++ atau bentuk ++N.

 

Bentuk operator aritmatika selengkapnya dapat dilihat pada tabel berikut :

Notasi

Fungsi

Bentuk umum

Bentuk khusus

++

Menambah dgn. 1

A = A + 1

A++

 

 

A = A + 1

++A

--

Mengurangi dgn. 1

A = A - 1

A--

 

 

A = A - 1

--A

+=

Tambah dgn. N

A = A + N

A += N

-=

Kurangi dgn. N

A = A - N

A -= N

*=

Kalikan dgn. N

A = A * N

A *= N

/=

Bagi dgn. N

A = A / N

A /= N

%=

Sisa bagi dgn. N

A = A % N

A %= N

 

Perbedaan bentuk A++ dan bentuk ++A

            Pada bentuk X = A++

            mula-mula nilai A diberikan ke X, setelah itu nilai A ditambah dengan 1, atau

                        X = A

                        A = A + 1

            Pada bentuk X = ++A

            mula-mula nilai A ditambah dengan 1, setelah itu hasilnya diberikan ke X,atau

                        A = A + 1

                        X = A

 

OPERATOR KONDISI

            Operator kondisi digunakan pada pernyataan kondisi (conditional expression),

yaitu suatu pernyataan yang dapat menghasilkan dua nilai berbeda, tergantung dari kondisi yang dimiliki pernyataan tersebut.

Sebagai contoh, pernyataan :

            if (a > b)

                        z = a;

            else

                        z = b;

akan mencari bilangan terbesar di antara 2 buah bilangan, yaitu a atau b.  Pernyataan seperti di atas dapat dituliskan dalam bahasa C menjadi :

            z = (a > b) ? a : b;

Contoh lain, pernyataan :

            for (i = 0; i < n; i++)

                        printf("%6d%c", i, (i % 10 ==5) ? '\n' : ' ');

akan menghasilkan output seperti :

                  0      1      2      3      4      5

                  6      7      8      9    10    11    12    13    14    15

                16    17    18    19

 

untuk nilai n = 20.

OPERATOR BITWISE

            Bahasa C mempunyai 6 buah operator untuk memanipulasi bit yang hanya dapat diterapkan pada bilangan-bilangan bulat saja, yaitu pada tipe data char, short, int, dan long.  Tipe-tipe data tersebut dapat berupa signed atau unsigned.

            &         operator bitwise AND

            |           operator bitwise inklusif OR

            ^          operator bitwise eksklusif OR (XOR)

            <<        operator bitwise geser kiri

            >>        operator bitwise geser kanan

            ~          operator bitwise one's complement (unary)

Operator & sering digunakan untuk proses masking bit-bit posisi tertentu.

Contoh :

            0x1 & 0x0177 akan menghasilkan 0x1

            0xF1 & 0x0177 akan menghasilkan 0x71

            5 | 2 akan menghasilkan 7

            5 | 9 akan menghasilkan 13

            1 ^ 0 akan menghasilkan 1

            8 >> 2 akan menghasilkan 2

            4 << 3 akan menghasilkan 32

           

TINGKATAN-TINGKATAN OPERATOR

            Tabel pada halaman berikut akan memperlihatkan kedudukan dari setiap operator terhadap operator lainnya, dan bagaimana arah pengeksekusian dari suatu pernyataan yang mengandung operator tersebut

 

Operator

Evaluasi

( ) [ ]   .

kiri ke kanan

!  ~  ++  --  +  -  *  &  (type)  sizeof

kanan ke kiri

*  /  %

kiri ke kanan

+  -

kiri ke kanan

<<  >>

kiri ke kanan

<  <=  >  >=

kiri ke kanan

==  !=

kiri ke kanan

&

kiri ke kanan

^

kiri ke kanan

|

kiri ke kanan

&&

kiri ke kanan

||

kiri ke kanan

? :

kanan ke kiri

=  +=  -=  *=  /=  %=  &=  ^=  |=  <<=  >>=

kanan ke kiri

,

kiri ke kanan

 

Sebagai contoh, operator binary + dan - mempunyai kedudukan yang lebih tinggi dibandingkan dengan operator !=, dan operator & mempunyai kedudukan yang lebih tinggi dibandingkan dengan operator &&.

Catatan :

        Operator unary +, -, dan * mempunyai kedudukan yang lebih tinggi dibandingkan dengan bentuk binary-nya.

        Kedudukan operator bitwise &, ^, dan | lebih rendah dibandingkan dengan operator == dan !=.  Dengan demikian, pernyataan seperti :

                        if ( (x & MASK) == 0 )  ......

            harus menggunakan tanda kurung seperti pada bentuk di atas agar memperoleh hasil yang diinginkan.