Saya agak bingung dengan dokumentasi C # MSDN yang menyatakan itu &
dan |
operator logis dan bahwa &&
dan ||
adalah operator bersyarat.
Saya terus menelepon &&
, ||
dan !
operator logis, jadi saya salah?
c#
operators
logical-operator
John V
sumber
sumber
|
dapat dipertukarkan dengan||
, meskipun dalam banyak kasus mereka dapat dipertukarkan tanpa perubahan nyata dalam perilaku program.Jawaban:
Tidak; kamu benar.
Ada banyak kesalahan nomenklatur kecil, sebagian besar tidak penting dalam dokumentasi MSDN; Saya mencoba mengeluarkan sebanyak mungkin dari mereka, tetapi dalam kasus-kasus yang tidak salah dan menyesatkan, itu tidak selalu merupakan penggunaan waktu yang bijak. Pergi ke spesifikasi jika Anda ingin pernyataan definitif tentang nama fitur C #.
Jadi: otoritas yang relevan adalah spesifikasi C #, yang menyatakan dalam bagian 7.11:
Kemudian melanjutkan untuk memecah lebih lanjut operator logis built-in menjadi integer, enumerasi, Boolean dan operator logika nullable-Boolean. Ada juga operator logis yang ditentukan pengguna; lihat spesifikasi untuk detailnya.
Di bagian 7.12 yang kita miliki
Jadi semuanya adalah operator yang logis . Beberapa dari mereka adalah operator logis bersyarat .
Apa yang membuat operator logika kondisional bersyarat ? Orang mungkin membuat dugaan yang salah bahwa itu karena mereka biasanya digunakan dalam pernyataan kondisional (
if
) atau ekspresi kondisional (? :
). Alasan sebenarnya diberikan oleh spesifikasi:Operator logika kondisional dinamai demikian karena operan tangan kanan dievaluasi secara kondisional tergantung pada nilai operan tangan kiri.
Kita dapat melihat ini lebih jelas dengan mencatat bahwa operator logika kondisional hanyalah "gula sintaksis" untuk ekspresi kondisional .
x && y
adalah cara menulis yang lebih menyenangkanx ? y : false
, dan cara menulisx || y
yang lebih menyenangkanx ? true : y
. Ekspresi logis bersyarat sebenarnya adalah ekspresi kondisional.Ada juga bentuk operator logis bersyarat yang ditentukan pengguna, dan sedikit rumit. Lihat spesifikasi untuk detailnya.
Bacaan lebih lanjut, jika subjek ini menarik minat Anda:
sumber
Dalam C # ini semua adalah operator logis.
&&
dan||
disebut " operator logis bersyarat " karena mereka mengalami hubungan arus pendek.Perhatikan bahwa terminologi ini berbeda dari bahasa ke bahasa. Di C dan C ++
&&
dan||
hanya Operator Logis. Di Jawa,&
dan|
disebut Operator Bitwise , sedangkan C dan C ++ mengklasifikasikan mereka sebagai Operator Aritmatika .sumber
Intinya adalah bahwa
&
dan|
merupakan operator bitwise , artinya mereka diterapkan dan menghasilkan nilai string bit. Dan bitwise adalah istilah yang sangat digunakan di kalangan programmer.Misalnya
0xff & 0x00 == 0x00
, sementara0xff | 0x00 == 0xff
.Dan
&&
dan||
diterapkan pada kondisi, dan menghasilkan nilai kondisi yang biasa; yaitutrue
danfalse
.Misalnya
true && false == false
, sementaratrue || false == true
.Oleh karena itu
&&
dan||
bisa disebut operator kondisional , meskipun itu bukan istilah yang biasa di kalangan programmer.Tentu saja, setiap programmer C, C ++, Java dan C # mengetahui semua itu. Tapi saya kira kesalahpahaman itu terjadi karena "operator kondisional" bukan istilah yang sering digunakan oleh kami programmer.
sumber