ان (x & y، x && y) کے درمیان کیا فرق ہے اور c ++ میں "&" کا کیا مطلب ہے؟


جواب 1:

&& بولین اینڈ آپریٹر ہے۔ حق کی میز یہ ہے:

~ | ایکس
y | 0 1
------------
0 | 0 0
1 | 0 1

دوسرے لفظوں میں ، اگر آپریٹر کے دونوں اطراف میں عددی اقدار (x اور y) '1' ہیں تو پھر وہ 1 دیتی ہے ، ورنہ یہ '0' لوٹاتا ہے۔

چونکہ یہ اصل میں انٹیجر متغیر کے لئے تیار کیا گیا تھا (C میں بولین کی قسم نہیں ہے) جب 0 یا 1 کے علاوہ دیگر اقدار کا سامنا کرنا پڑتا ہے تو اسے بھی کچھ کرنا پڑتا ہے۔ مجھے یقین نہیں ہے کہ یہ کیا کرتا ہے (مجھے یقین ہے کہ اس کا نتیجہ سی کے معیار کے مطابق رہ گیا ہے) لیکن اس کے آس پاس ایک آسان طریقہ موجود ہے: ہمیشہ اس بات کو یقینی بنائیں کہ آپ جس متغیر کی موازنہ کر رہے ہو وہ صرف '0' یا '1' کی اقدار کو ہی قبول کرے۔ '.

اور تھوڑا سا اور آپریٹر ہے۔ یہ انٹیگیر متغیر (x اور y دوبارہ) کے ایک جوڑے میں ہر ایک سے متعلق تھوڑا سا لیتا ہے اور دوسرا عددی واپس کرنے کے بعد ، اوپر بیان کردہ آپریشن انجام دیتا ہے۔


جواب 2:

سنگل ایمپرسینڈ (&) تھوڑا سا آپریٹر ہے۔ ڈبل ایمپرسینڈ (&&) ایک منطقی آپریٹر ہے۔

منطقی آپریٹر کو سمجھنا آسان ہے۔ یہ بنیادی طور پر سچ کی ایک بولین ویلیو واپس کرتا ہے اگر X اور y دونوں خود ہی سچائی کا جائزہ لیں۔ بصورت دیگر ، یہ جھوٹا لوٹاتا ہے۔

بٹ سائڈ آپریٹر بھی ایسا ہی کام کرتا ہے ، لیکن یہ تھوڑا سا کر رہا ہے۔

تو ، فرض کریں x = 7 اور y = 11 پھر بائنری نمائندگی حسب ذیل ہیں:

x = 0000: 0111

y = 0000: 1011

اینڈ آپریشن کو تھوڑا سا کر کے ، ہمیں مندرجہ ذیل نتیجہ ملتا ہے:

x & y = 0000: 0011 = 3

پہلا گھٹا سب زیرو ہے۔ لہذا ، یہ تمام صفر (0 & 0 = 0) پر قائم ہے۔ نچلے حصے میں سے گزرتے ہوئے ہمیں یہ مل جاتا ہے۔

چوتھا سا (x [3] اور y [3]): 0 اور 1 = 0

تیسرا سا (x [2] اور y [2]): 1 & 0 = 0

دوسرا سا (x [1] اور y [1]): 1 اور 1 = 1

پہلا سا (x [0] اور y [0]): 1 اور 1 = 1۔

منطقی آپریٹر کے ل if ، اگر متغیر میں تھوڑا سا غیر صفر ہے ، تو عام طور پر اس کا مطلب یہ ہوتا ہے کہ پوری متغیر صحیح کی جانچ کرتا ہے اور تشخیص ایک ہی قیمت کے ساتھ وہاں سے جاتا ہے۔ بٹ سائڈ آپریٹر ہر بٹ کو اپنے حساب سے دیکھتا ہے۔