PDA

View Full Version : سوال: توضیح در مورد ( "&&" و "&" و "||" و "|" )



SeyedMoosavi
چهارشنبه 30 بهمن 1387, 21:39 عصر
سلام
من می خواستم بدونم که این علامت ها چیکار میکنند
می دونم که :
&& = AND منطقی
& = AND باینری
|| = OR منطقی
| = OR باینری
اما وقتی که میگن
a=12 ; b=15
a && b
a & b
a|| b
a | b
(a>b) && b
یعنی چی؟
اینا رو استادمون داده جلسه اول توضیحی در موردشون نداد به خاطر همین توشون موندم
نمی خوام جوابشون رو بدین می خوام بدونم یعنی چی
دستتون درد نکنه

majid325
چهارشنبه 30 بهمن 1387, 22:14 عصر
تا اونجا كه من اطلاع دارم متغيير هاي عددي رو نميشه and يا or كرد ولي ميشه bool رو and , or و .... كرد
يا شايد هم استادتون يه شبه كد استفاده كرده

alireza_tavakol
چهارشنبه 30 بهمن 1387, 23:21 عصر
سيد موسوي عزيز من فکر کنم اين ترم شما درس برنامه نويسي به زبان C يا ++C را داشته باشيد چون اين سوال مربوط ميشه به زبان هاي سطح مياني و همان طوري که مجيد جان ( دلبندم ) گفت نمي توان عملگر هاي منطقي رو روي متغيير هاي عددي در زبان هاي خيلي سطح ( Visual ) به کار برد و با پيغام خطا مواجح ميشي!

اما جواب شما براي زبان هاي سطح مياني مانند زبان C يا ++C :

در زبان هاي سطح مياني همه اعداد مقدار true فرض ميشوند به جز عدد صفر 0 که مقدار false براي آن تصور ميشود پس مثلا a && b چون مقدار اولي 12 يعني true و مقدار دومي 15 هستش و طبق قانون باز true حساب ميشود خروجي اين دستور ( a && b ) true است

SeyedMoosavi
چهارشنبه 30 بهمن 1387, 23:42 عصر
یعنی به استاد بگم اشتباه سوال دادی؟

تا اونجا كه من اطلاع دارم متغيير هاي عددي رو نميشه and يا or كرد ولي ميشه bool رو and , or و .... كرد
يا شايد هم استادتون يه شبه كد استفاده كرده

molana alavi
پنج شنبه 01 اسفند 1387, 00:26 صبح
نمی دونم منظور استاد تو چه زبانی بوده C یا C#؟ به هر حال هر دو تاشو با حل مثالی که گفتی برات شرح می دم
اول C : همونطوری که گفتی && و || عملگر دودوئی منطقی هستند یعنی بر روی داده های دودوئی عملیات می کنند اما ما در C وقتی از یک مقدار عددی به عنوان داده بولین استفاده می کنیم در صورتی که مقدار اون صفر باشه مقدار false در نظر گرفته می شه و در غیر اینصورت مقدار true در نظر گرفته میشه در مثالی که گفتی
a && b حاصلش میشه مقدار درستی
a||b حاصلش میشه مقدار درستی
اما عملگرهای | یا & که عملگرهای بیتی هستند تک تک بیت ها رو | یا & می کنند یعنی چون a معادل 1100 و b معادل 1111 دودوئی هستش مقدار حاصل
a & b برابر 1111 میشه و
a|b برابر 1111 میشه یعنی هم and و or معمولی که حتما تا حالا خوندی
اما در C# : در این زبان ما نمی تونیم مقدار عددی رو به عنوان مقداری منطقی در نظ بگیریم پس وقتی ما a&&b یا a||b در کد استفاده کنیم کامپایلر خطا می گیره ولی در مورد & و | دقیقا مل زبان C عمل می کنه

majid325
جمعه 02 اسفند 1387, 05:53 صبح
نمی دونم منظور استاد تو چه زبانی بوده C یا C#؟ به هر حال هر دو تاشو با حل مثالی که گفتی برات شرح می دم
اول C : همونطوری که گفتی && و || عملگر دودوئی منطقی هستند یعنی بر روی داده های دودوئی عملیات می کنند اما ما در C وقتی از یک مقدار عددی به عنوان داده بولین استفاده می کنیم در صورتی که مقدار اون صفر باشه مقدار false در نظر گرفته می شه و در غیر اینصورت مقدار true در نظر گرفته میشه در مثالی که گفتی
a && b حاصلش میشه مقدار درستی
a||b حاصلش میشه مقدار درستی
اما عملگرهای | یا & که عملگرهای بیتی هستند تک تک بیت ها رو | یا & می کنند یعنی چون a معادل 1100 و b معادل 1111 دودوئی هستش مقدار حاصل
a & b برابر 1111 میشه و
a|b برابر 1111 میشه یعنی هم and و or معمولی که حتما تا حالا خوندی
اما در C# : در این زبان ما نمی تونیم مقدار عددی رو به عنوان مقداری منطقی در نظ بگیریم پس وقتی ما a&&b یا a||b در کد استفاده کنیم کامپایلر خطا می گیره ولی در مورد & و | دقیقا مل زبان C عمل می کنه

به متن زير كه قسمتي از سوال بود توجه كنيد:

اما وقتی که میگن
a=12 ; b=15
a && b
a & b
a|| b
a | b
(a>b) && b
یعنی چی؟
در خط اول متغييرها رو با مقادير عددي ، مقدار دهي كرده...

molana alavi
جمعه 02 اسفند 1387, 13:24 عصر
توضیحی که دادم با توجه به همین مقادیر عددی بوده
البته یه اشتباهی داشتم که مقدار a&b میشه 1100 نه 1111 (یعنی میشه 12 نه 15)
و همچنین مقدار a>b) && b) میشه false