संबंधपरक प्रचालक
कंप्यूटर विज्ञान में, एक संबंधपरक संकारक (संबंधपरक प्रचालक) एक प्रोग्रामिंग भाषा निर्माण या प्रचालक (प्रोग्रामिंग) है जो दो संस्थाओं के बीच किसी प्रकार के संबंध (गणित) का परीक्षण या परिभाषित करता है। इनमें संख्यात्मक समानता (गणित) (जैसे,5 = 5) और असमानता (गणित) (जैसे, 4 ≥ 3) सम्मिलित है।
प्रोग्रामिंग भाषाओं में, जिसमें उनके प्रकार की प्रणाली में एक अलग बूलियन डेटा प्रकार सम्मिलित हैं, जैसे पास्कल (प्रोग्रामिंग भाषा), एडीए (प्रोग्रामिंग भाषा), या जावा (प्रोग्रामिंग भाषा), ये ऑपरेटर सामान्यतः सही या गलत का मूल्यांकन करते हैं, इस यह बात पर निर्भर करता है कि दो ओपेरंड के बीच सशर्त संबंध है या नहीं है। सी (प्रोग्रामिंग भाषा) जैसी भाषाओं में, संबंधपरक प्रचालक पूर्णांक 0 या 1 को प्रदर्शित करते हैं, जहां 0 असत्य को तथा कोई भी गैर-शून्य मान सत्य के लिए होता है।
अभिव्यक्ति (प्रोग्रामिंग) एक संबंधपरक प्रचालक का उपयोग करके बनाई गई एक अभिव्यक्ति को एक रिलेशनल एक्सप्रेशन या एक शर्त कहा जाता है। संबंधपरक संचालकों को तार्किक विधेय के विशेष मामलों के रूप में देखा जा सकता है।
समानता
उपयोग
कई प्रोग्रामिंग भाषा निर्माण और डेटा प्रकारों में समानता का उपयोग किया जाता है। यह परीक्षण करने के लिए प्रयोग किया जाता है कि क्या कोई तत्व पहले से ही सेट (कंप्यूटर विज्ञान) में मौजूद है, या किसी कुंजी के माध्यम से किसी मान तक पहुंचने के लिए है। इसका उपयोग स्विच विवरण में नियंत्रण प्रवाह को सही शाखा में भेजने के लिए और तर्क प्रोग्रामिंग में एकीकरण प्रक्रिया के दौरान किया जाता है। समानता का एक संभावित अर्थ यह है कि "यदि a बराबर b है, तो या तो a या b को किसी भी संदर्भ में किसी भी अंतर पर ध्यान दिए बिना एक दूसरे के स्थान पर उपयोग किया जा सकता है।" लेकिन यह कथन अनिवार्य रूप से धारण नहीं करता है, विशेष रूप से सामग्री समानता के साथ-साथ परिवर्तनशीलता को ध्यान में रखते हुए किया जाता है।
स्थान समानता बनाम सामग्री समानता
कभी-कभी, विशेष रूप से वस्तु-उन्मुख (वस्तु ओरिएंटेड) प्रोग्रामिंग में, तुलना डेटा प्रकार और वंशानुक्रम, समानता और पहचान (गणित) के प्रश्न उठाती है। इसके बीच अंतर करना प्रायः आवश्यक होता है:
- एक ही प्रकार की दो अलग -अलग वस्तुएं, जैसे, दो हाथ
- दो वस्तुएं समान हैं, लेकिन अलग हैं, जैसे, दो $ 10 बैंकनोट्स
- दो वस्तुएं समान हैं लेकिन अलग -अलग प्रतिनिधित्व करते हैं, जैसे, एक $ 1 बिल और एक $ 1 का सिक्का
- एक ही वस्तु के दो अलग -अलग संदर्भ, जैसे, एक ही व्यक्ति के लिए दो उपनाम
- कई आधुनिक प्रोग्रामिंग भाषाओं में, वस्तुएं और डेटा संरचनाओं को संदर्भ (कंप्यूटर विज्ञान) के माध्यम से एक्सेस किया जाता है। ऐसी भाषाओं में, दो अलग -अलग प्रकार की समानता के लिए परीक्षण करने की आवश्यकता बन जाती है:
- स्थान समानता (पहचान): यदि दो संदर्भ (ए और बी) एक ही वस्तु का संदर्भ देते हैं। ए के माध्यम से वस्तु के साथ बातचीत बी के माध्यम से समान इंटरैक्शन से अप्रभेद्य हैं, और ए के माध्यम से वस्तु (वस्तु) में विशेष रूप से परिवर्तन बी के माध्यम से परिलक्षित होते हैं।
- सामग्री समानता: यदि दो संदर्भों (ए और बी) द्वारा संदर्भित वस्तुएं कुछ अर्थों में समतुल्य हैं:
- संरचनात्मक समानता (यानी, उनकी सामग्री समान हैं)। जो या तो उथला हो सकता है (केवल तत्काल उप -परीक्षण का परीक्षण), या गहरा (उप -भागों की समानता के लिए परीक्षण)। इसे प्राप्त करने का एक सरल तरीका प्रतिनिधित्वात्मक समानता के माध्यम से है: यह जाँचना कि मूल्यों का एक ही प्रतिनिधित्व है।
- तदनुकूल, बाहरी व्यवहार को संरक्षित करना। उदाहरण के लिए, 1/2 और 2/4 को एक तर्कसंगत संख्या के रूप में देखे जाने पर समान माना जाता है। एक संभावित आवश्यकता यह होगी कि ए = बी यदि और केवल यदि वस्तु ए और बी पर सभी संचालन में एक ही परिणाम होगा, तो रिफ्लेक्टिव रिलेशन, समरूपता और सकर्मक संबंध के अलावा है।
समानता का पहला प्रकार सामान्यतः दूसरे का तात्पर्य है (संख्या (एनएएन) जैसी चीजों को छोड़कर जो स्वयं के लिए असमान हैं), लेकिन बातचीत आवश्यक रूप से सत्य नहीं है। उदाहरण के लिए, दो स्ट्रिंग (कंप्यूटर विज्ञान) वस्तु अलग -अलग वस्तु हो सकते हैं (पहले अर्थ में असमान), लेकिन इसमें वर्णों का समान अनुक्रम (दूसरे अर्थ में समान) होता है। इस मुद्दे के अधिक के लिए पहचान (वस्तु-ओरिएंटेड प्रोग्रामिंग) देखें।
कई सरल अंश (गणित) सहित वास्तविक संख्याओं को फ्लोटिंग-पॉइंट अंकगणित में बिल्कुल दर्शाया नहीं जा सकता है, और किसी दिए गए सहिष्णुता के भीतर समानता के लिए परीक्षण करना आवश्यक हो सकता है। इस तरह की सहिष्णुता, हालांकि, आसानी से वांछित गुणों जैसे कि संक्रामिता को तोड़ सकती है, जबकि स्वतुल्यता (रिफ्लेक्सिटी) टूट जाती है: आईईईई 754। आईईईई फ्लोटिंग-पॉइंट स्टैंडर्ड के लिए आवश्यक है कि नान ≠ नान होल्ड्स हो। इसके विपरीत, (2022) पॉज़िट (नंबर प्रारूप) अंकगणित के लिए तकनीकी मानक (पॉज़िट समर्थकों का अर्थ है आईईईई फ्लोट्स को बदलने के लिए) एक समान अवधारणा है, NएR (वास्तविक नहीं), जहां nएr = nएr पकड़ता है।[1]अन्य प्रोग्रामिंग तत्व जैसे कि कम्प्यूटेबल फ़ंक्शंस, या तो समानता की कोई भावना नहीं हो सकती है, या एक समानता जो असमान है। इन कारणों के लिए, कुछ भाषाएं एक आधार वर्ग, एक इंटरफ़ेस, एक विशेषता या एक प्रोटोकॉल के रूप में तुलनीय की एक स्पष्ट धारणा को परिभाषित करती हैं, जिसका उपयोग या तो स्पष्ट रूप से उपयोग किया जाता है, स्रोत कोड में घोषणा द्वारा, या निहित रूप से, संरचना के माध्यम से सम्मिलित प्रकार के है।
विभिन्न प्रकार के मूल्यों की तुलना करना
जावास्क्रिप्ट,, पीएचपी, वीबीस्क्रिप्ट और कुछ अन्य गतिशील रूप से टाइप की गई भाषाओं में, मानक समानता ऑपरेटर सत्य का मूल्यांकन करता है यदि दो मान समान हैं, भले ही उनके पास अलग-अलग प्रकार हों, उदाहरण के लिए संख्या 4 पाठ स्ट्रिंग "4" के बराबर तुलना करें। एक टाइप किया गया समानता ऑपरेटर प्रायः ऐसी भाषाओं में भी उपलब्ध होता है, जो केवल समान या समकक्ष प्रकार वाले मानों के लिए सही होता है (PHP में, 4 === "4" गलत है, हालांकि 4 == "4" सत्य है)।[2][3] उन भाषाओं के लिए जहां संख्या 0 को असत्य के रूप में व्याख्यायित किया जा सकता है, यह ऑपरेटर शून्य की जांच करने जैसी चीजों को सरल बना सकता है (जैसा कि x == 0 x के लिए सत्य होगा या तो 0 या "0" प्रकार के अज्ञेयवादी समानता ऑपरेटर का उपयोग कर के)।
आदेश
गैर-अंकीय डेटा की तुलना से अधिक और कम से कम एक प्रकार के सम्मेलन के अनुसार किया जाता है (जैसे, पाठ तार, लेक्सिकोग्राफिकल ऑर्डर के लिए) जो प्रोग्रामिंग भाषा में बनाया जा सकता है और/या एक प्रोग्रामर द्वारा कॉन्फ़िगर करने योग्य हो सकता है।
जब यह दो डेटा आइटमों के बीच तुलना के परिणाम के साथ एक संख्यात्मक मान को जोड़ने के लिए वांछित होता है, तो कहते हैं कि ए और बी, सामान्य सम्मेलन को असाइन करना और माइनस करना है; 1 यदि ए <बी, 0 यदि ए = बी और 1 अगर ए> बी अगर ए> बी। उदाहरण के लिए, सी फ़ंक्शनएसटीआरसीएमपी
इस सम्मेलन के अनुसार तीन-तरफ़ा तुलना और रिटर्न & माइनस; 1, 0, या 1 करता है, और क्यू सॉर्ट को इस सम्मेलन के अनुसार मूल्यों को वापस करने के लिए तुलना समारोह की उम्मीद है। एल्गोरिदम को छांटने में, तुलना कोड की दक्षता महत्वपूर्ण है क्योंकि यह छंटाई प्रदर्शन में योगदान देने वाले प्रमुख कारकों में से एक है।
प्रोग्रामर-डिफाइंड डेटा प्रकारों की तुलना (डेटा प्रकार जिसके लिए प्रोग्रामिंग भाषा में कोई इन-बिल्ट समझ नहीं है) कस्टम-लिखित या लाइब्रेरी फ़ंक्शंस (जैसे) द्वारा किया जा सकता हैएसटीआरसीएमपी
ऊपर उल्लेख किया गया है), या, कुछ भाषाओं में, ऑपरेटर द्वारा एक तुलना ऑपरेटर को ओवरलोड करके-अर्थात्, एक प्रोग्रामर-परिभाषित अर्थ को असाइन करना जो डेटा प्रकारों की तुलना में निर्भर करता है।एक अन्य विकल्प कुछ सम्मेलन का उपयोग कर रहा है जैसे कि सदस्य-वार तुलना किया जाता है।
तार्किक समतुल्यता
हालांकि शायद सबसे पहले, बूलियन तर्क तार्किक प्रचालक एक्सओआर, और, या, और नहीं, संबंधपरक प्रचालकों को तार्किक समतुल्यता के लिए डिज़ाइन किया जा सकता है, जैसे कि वे सभी को एक दूसरे के संदर्भ में परिभाषित किया जा सकता है।निम्नलिखित चार सशर्त कथनों में किसी भी दिए गए एक्स और वाई मानों के लिए एक ही तार्किक समतुल्यता E (या तो सभी सत्य या सभी झूठे) हैं:
यह डोमेन पर अच्छी तरह से आदेश दिया जा रहा है।
मानक संबंधपरक ऑपरेटर
प्रोग्रामिंग भाषाओं में उपयोग किए जाने वाले सबसे आम संख्यात्मक संबंधपरक ऑपरेटर नीचे दिखाए गए हैं। मानक SQL, एक ही ऑपरेटरों को बुनियादी के रूप में उपयोग करता है, जबकि कई डेटाबेस अनुमति देते हैं !=
निम्न के अलावा <>
मानक से। SQL सख्त बूलियन बीजगणित का अनुसरण करता है, यानी शॉर्ट-सर्किट मूल्यांकन का उपयोग नहीं करता है, जो नीचे अधिकांश भाषाओं के लिए आम है। उदाहरण PHP के पास है, लेकिन अन्यथा इसमें इन दो ऑपरेटरों को कई SQL डेटाबेस की तरह उपनाम के रूप में परिभाषित किया गया है।
सम्मेलन | के बराबर | असमान | से अधिक | से कम | से अधिक
या बराबर |
से कम
या बराबर |
---|---|---|---|---|---|---|
छपाई में | = | ≠ | > | < | ≥ | ≤ |
फोरट्रान[note 1] | .EQ.
|
.NE.
|
.GT.
|
.LT.
|
.GE.
|
.LE.
|
एल्गोल 68[note 2] | =
|
≠
|
>
|
<
|
≥
|
≤
|
/=
|
>=
|
<=
| ||||
eq
|
ne
|
gt
|
lt
|
ge
|
le
| |
एपीएल | =
|
≠
|
>
|
<
|
≥
|
≤
|
बेसिक , एमएल , पास्कल[note 3] | =
|
<>
|
>
|
<
|
>=
|
<=
|
सी-लाइक[note 4] | ==
|
!=
|
>
|
<
|
>=
|
<=
|
एमयूएमपीएस | =
|
'=
|
>
|
<
|
'<
|
'>
|
लुआ | ==
|
~=
|
>
|
<
|
>=
|
<=
|
एरलांग | ==
|
/=
|
>
|
<
|
>=
|
=<
|
=:=
|
=/=
| |||||
बॉर्न-जैसे गोले[note 5] | -eq
|
-ne
|
-gt
|
-lt
|
-ge
|
-le
|
बैच फ़ाइल | EQU
|
NEQ
|
GTR
|
LSS
|
GEQ
|
LEQ
|
एमएटीएलएबी [note 6] | ==
|
~=
|
>
|
<
|
>=
|
<=
|
eq(x,y)
|
ne(x,y)
|
gt(x,y)
|
lt(x,y)
|
ge(x,y)
|
le(x,y)
| |
फोरट्रान 90,[note 7]हास्केल | ==
|
/=
|
>
|
<
|
>=
|
<=
|
गणित[4] | ==
|
!=
|
>
|
<
|
>=
|
<=
|
Equal[x,y]
|
Unequal[x,y]
|
Greater[x,y]
|
Less[x,y]
|
GreaterEqual[x,y]
|
LessEqual[x,y]
|
- ↑ Including FORTRAN II, III, IV, 66 and 77.
- ↑ ALGOL 68: stropping regimes are used in code on platforms with limited character sets (e.g., use
>=
orGE
instead of≥
), platforms with nobold
emphasis (use'ge'
), or platforms with only UPPERCASE (use.GE
or'GE'
). - ↑ Including ALGOL, Simula, Modula-2, Eiffel, SQL, spreadsheet formulas, and others.
- ↑ Including C, C++, C#, Go, Java, JavaScript, Perl (numerical comparison only), PHP, Python, Ruby, and R.
- ↑ Including Bourne shell, Bash, KornShell, and Windows PowerShell. The symbols
<
and>
are usually used in a shell for redirection, so other symbols must be used. Without the hyphen, is used in Perl for string comparison. - ↑ MATLAB, although in other respects using similar syntax as C, does not use
!=
, as!
in MATLAB sends the following text as a command line to the operating system. The first form is also used in Smalltalk, with the exception of equality, which is=
. - ↑ Including FORTRAN 95, 2003, 2008 and 2015.
अन्य सम्मेलन कम आम हैं: आम LISP और MएcSymए/Mएximए (सॉफ्टवेयर) असमानता को छोड़कर बुनियादी जैसे ऑपरेटरों का उपयोग करते हैं, जो है /=
आम लिस्प में और #
MएcSymए/Mएximए में।पुराने LISP (प्रोग्रामिंग भाषा) का उपयोग किया equएl
, greएterp
, और lessp
;और उनका उपयोग करके उन्हें नकार दिया not
शेष ऑपरेटरों के लिए हैं।
सिंटैक्स
संबंधपरक ऑपरेटरों का उपयोग शब्दों के बजाय तकनीकी साहित्य में भी किया जाता है। संबंधपरक प्रचालकों को सामान्यतः Infix नोटेशन में लिखा जाता है, यदि प्रोग्रामिंग भाषा द्वारा समर्थित है, जिसका अर्थ है कि वे अपने ऑपरेंड्स (दो अभिव्यक्तियों से संबंधित) के बीच दिखाई देते हैं। उदाहरण के लिए, पायथन में एक अभिव्यक्ति संदेश को प्रिंट करेगी यदि x y से कम है:
यदि एक्स <वाई:
प्रिंट ("इस उदाहरण में एक्स,वाई:से कम है")
अन्य प्रोग्रामिंग भाषाएं, जैसे LISP (प्रोग्रामिंग भाषा), उपसर्ग संकेतन का उपयोग करें, निम्नानुसार हैं:
(>= X Y)
ऑपरेटर चेनिंग
गणित में, चेन संबंधपरक प्रचालकों के लिए यह आम बात है, जैसे कि 3 <x <y <20 (जिसका अर्थ है 3 <x और x <y और y <20)। वाक्यविन्यास स्पष्ट है क्योंकि गणित में ये संबंधपरक ऑपरेटर सकर्मक हैं।
हालाँकि, कई हालिया प्रोग्रामिंग भाषाओं में 3 <x <y जैसी अभिव्यक्ति दिखाई देगी, जिसमें दो बाएं (या दाएं-) साहचर्य ऑपरेटरों को सम्मिलित किया जाएगा, इसे कुछ के रूप में व्याख्या करना (3 < x) < y
।अगर हम कहते हैं कि x = 4, हम तब प्राप्त करते हैं (3 < 4) < y
, और मूल्यांकन देगा true < y
जो आम तौर पर समझ में नहीं आता है।हालांकि, यह C/C ++ और कुछ अन्य भाषाओं में संकलित करता है, आश्चर्यजनक परिणाम प्राप्त करता है (जैसा कि सच 1 नंबर 1 द्वारा दर्शाया जाएगा)।
अभिव्यक्ति देना संभव है x < y < z
इसका परिचित गणितीय अर्थ, और कुछ प्रोग्रामिंग भाषाएं जैसे कि पायथन और राकू (प्रोग्रामिंग भाषा) ऐसा करते हैं।अन्य, जैसे कि C# और Jएvए, आंशिक रूप से नहीं करते हैं, क्योंकि यह सी-जैसी भाषाओं में काम करने वाले अधिकांश अन्य Infix ऑपरेटरों के तरीके से भिन्न होगा। डी प्रोग्रामिंग भाषा ऐसा नहीं करती है कि चूंकि यह सी के साथ कुछ संगतता को बनाए रखता है, और सी एक्सप्रेशंस की अनुमति देता है, लेकिन सूक्ष्म रूप से अलग -अलग शब्दार्थ के साथ (यद्यपि यकीनन सही दिशा में) सुविधा से अधिक भ्रम जोड़ देगा।[5]
कुछ भाषाएं, जैसे सामान्यतः लिस्प, इसके लिए कई तर्क का उपयोग करती हैं। लिस्प में (<= 1 x 10)
सच है जब x 1 और 10 के बीच होता है।
असाइनमेंट ऑपरेटरों के साथ भ्रम
प्रारंभिक फोरट्रान (1956-57) भारी प्रतिबंधित वर्ण सेटों से घिरा हुआ था जहां = एकमात्र रिलेशनल ऑपरेटर उपलब्ध था। कोई <या> (और निश्चित रूप से कोई ≤ या ≥) नहीं थे। इसने डिजाइनरों को .GT., .LT., .GE., .EQ जैसे प्रतीकों को परिभाषित करने के लिए मजबूर किया। आदि और बाद में गणितीय उपयोग (X=X+1 असंभव होना चाहिए) के साथ स्पष्ट असंगति के बावजूद, प्रतिलिपि बनाने के लिए शेष = वर्ण का उपयोग करने के लिए आकर्षक बना दिया हैं।
अंतर्राष्ट्रीय बीजगणितीय भाषा (आईएएल, एल्गोल 58 ) और एल्गोल (1958 और 1960) इस प्रकार पेश किए गए: = असाइनमेंट के लिए, मानक छोड़कर = समानता के लिए उपलब्ध, CPL, ALGOL W, ALGOL 68, बेसिक कंबाइंड प्रोग्रामिंग लैंग्वेज (बीसीपीएल) के बाद एक कन्वेंशन , सिमुला, सेट लैंग्वेज (एसईएलटी), पास्कल (प्रोग्रामिंग लैंग्वेज), स्मॉलटॉक, मोडुला -2, एDए (प्रोग्रामिंग लैंग्वेज), मानक एमएल , OCएML, एफिल (प्रोग्रामिंग लैंग्वेज), वस्तु पास्कल (डेल्फी (प्रोग्रामिंग भाषा) ), ओबेरोन,डायलन (प्रोग्रामिंग भाषा) , वीएचएसआईसी हार्डवेयर विवरण भाषा (वीएचडीएल ), और कई अन्य भाषाएँ होती है।
बी और सी
अधिकांश प्रोग्रामिंग भाषाओं के बीच इस समान वास्तविक मानक को अंततः बदल दिया गया था, अप्रत्यक्ष रूप से, बी (प्रोग्रामिंग भाषा) नामक एक न्यूनतम संकलित भाषा द्वारा।इसका एकमात्र इच्छित एप्लिकेशन पहले बंदरगाह (तत्कालीन बहुत आदिम) यूनिक्स के लिए एक वाहन के रूप में था, लेकिन यह बहुत प्रभावशाली सी (प्रोग्रामिंग भाषा) भाषा में भी विकसित हुआ।
बी ने सिस्टम प्रोग्रामिंग लैंग्वेज बीCPL के एक सिंटैक्टिक रूप से बदले हुए संस्करण के रूप में शुरू किया, CPL (प्रोग्रामिंग भाषा) का एक सरलीकृत (और टाइपलेस) संस्करण।एक स्ट्रिप-डाउन प्रक्रिया के रूप में वर्णित किया गया है, एnd
और or
बी.सी.पी.एल के संचालक[6] के साथ बदल दिया गया था &
और |
(जो बाद में बन जाएगा &&
और ||
, क्रमश।[7])।एक ही प्रक्रिया में, अल्गोल शैली :=
बीCPL द्वारा प्रतिस्थापित किया गया था =
बी में यह सब अज्ञात होने का कारण है।[8] वैरिएबल अपडेट के रूप में बी में कोई विशेष सिंटैक्स नहीं था (जैसे let
या समान) और अभिव्यक्तियों में अनुमति दी गई थी, समान संकेत के इस गैर मानक अर्थ का मतलब था कि अब समान संकेत के पारंपरिक शब्दार्थ को दूसरे प्रतीक के साथ जोड़ा जाना था। केन थॉम्पसन ने तदर्थ का उपयोग किया ==
इसके लिए संयोजन।
बाद में एक छोटे प्रकार की प्रणाली को पेश किया गया था, बी तब सी बन गया। यूनिक्स के साथ इसके जुड़ाव के साथ इस भाषा की लोकप्रियता, जावा, सी#, और कई अन्य भाषाओं के बाद सूट के बाद, वाक्यात्मक रूप से, इस अनावश्यक संघर्ष के बावजूद गणितीय अर्थ के साथ इस अनावश्यक संघर्ष के बावजूद, समान संकेत।
भाषाएँ
सी में असाइनमेंट का एक मूल्य (प्रोग्रामिंग) होता है और चूंकि किसी भी गैर-शून्य स्केलर मान को सशर्त (प्रोग्रामिंग) में सही के रूप में व्याख्या किया जाता है,[9] कोड if (x = y)
कानूनी है, लेकिन इसका बहुत अलग अर्थ है if (x == y)
। पूर्व कोड टुकड़ा का अर्थ है y को x असाइन करें, और यदि X का नया मान शून्य नहीं है, तो निम्नलिखित कथन को निष्पादित करें।बाद के टुकड़े का मतलब है कि यदि और केवल यदि x y के बराबर है, तो निम्न कथन को निष्पादित करें।[10]
int x = 1;
int y = 2;
if (x = y) {
/* This code will always execute if y is anything but 0*/
printf("x is %d and y is %d\n", x, y);
}
हालांकि जावा (प्रोग्रामिंग लैंग्वेज) और सी शार्प (प्रोग्रामिंग लैंग्वेज) C# में सी के समान ऑपरेटर हैं, यह गलती सामान्यतः इन भाषाओं में एक संकलन त्रुटि का कारण बनती है, क्योंकि IF- स्थिति प्रकार की होनी चाहिए बूलियन
, और अन्य प्रकारों (जैसे, संख्या) से परिवर्तित करने का कोई निहित तरीका नहीं है बूलियन एस। इसलिए जब तक कि वैरिएबल को टाइप नहीं किया जाता है बूलियन
(या आवरण प्रकार बूलियन
), एक संकलन त्रुटि होगी।
पास्कल, डेल्फी, और एडीए जैसी एल्गोल जैसी भाषाओं में (इस अर्थ में कि वे नेस्टेड फ़ंक्शन परिभाषाओं की अनुमति देते हैं), और पायथन (प्रोग्रामिंग भाषा), और कई कार्यात्मक भाषाओं में, अन्य लोगों के बीच, असाइनमेंट ऑपरेटर एक अभिव्यक्ति (प्रोग्रामिंग (प्रोग्रामिंग) में दिखाई नहीं दे सकते हैं।) (सम्मिलित if
क्लॉस), इस प्रकार त्रुटि के इस वर्ग को रोकना।कुछ कंपाइलर, जैसे कि GNU संकलक संग्रह (GCC), IF स्टेटमेंट के अंदर एक असाइनमेंट ऑपरेटर वाले कोड को संकलित करते समय एक चेतावनी प्रदान करते हैं, हालांकि IF- स्थिति के अंदर असाइनमेंट के कुछ वैध उपयोग होते हैं।ऐसे मामलों में, चेतावनी से बचने के लिए असाइनमेंट को स्पष्ट रूप से कोष्ठक की एक अतिरिक्त जोड़ी में लपेटा जाना चाहिए।
इसी तरह, कुछ भाषाएं, जैसे कि बुनियादी उपयोग सिर्फ =
असाइनमेंट और समानता दोनों के लिए प्रतीक, क्योंकि वे वाक्यात्मक रूप से अलग हैं (जैसा कि पास्कल, एडीए, पायथन, आदि के साथ, असाइनमेंट ऑपरेटर अभिव्यक्तियों में दिखाई नहीं दे सकते हैं)।
कुछ प्रोग्रामर सामान्य आदेश के उल्टे में एक निरंतरता के खिलाफ तुलना लिखने की आदत में मिलते हैं:
if (2 == a) { /* Mistaken use of = versus == would be a compile-time error */
}
अगर =
गलती से उपयोग किया जाता है, परिणामी कोड अमान्य है क्योंकि 2 एक चर नहीं है। कंपाइलर एक त्रुटि संदेश उत्पन्न करेगा, जिस पर उचित ऑपरेटर को प्रतिस्थापित किया जा सकता है।इस कोडिंग शैली को बाएं हाथ की तुलना, या योदा की स्थिति कहा जाता है।
यह तालिका विभिन्न भाषाओं में इन दो प्रकार की समानता के लिए परीक्षण करने के लिए विभिन्न तंत्रों को सूचीबद्ध करती है:
भाषा | शारीरिक समानता | संरचनात्मक समानता | टिप्पणियाँ |
---|---|---|---|
एल्गोल 68 | a :=: b या a is b | ए = बी |
जब a और b पॉइंटर्स हैं |
C, C++ | a == b |
*a == *b |
जब a और b पॉइंटर्स हैं |
C# | oject.ReferenceEquals(a, b) |
a.Equals(b) |
ऑपरेटर == डिफॉल्ट करता है ReferenceEquals , लेकिन इसके बजाय प्रदर्शन करने के लिए ओवरलोड किया जा सकता है।Equals
|
सामान्य लिस्प | (eq a b) |
(equal a b) |
|
एरलांग | ए =:= बी
|
a == b
|
जब a और b संख्याएँ हैं |
Go (गो) | ए == बी |
reflect.DeepEqual(*a, *b) |
जब a और b पॉइंटर्स हैं |
जावा | ए == बी |
a.equals(b) |
|
जावास्क्रिप्ट | ए === बी |
a == b |
जब a और b दो स्ट्रिंग ऑब्जेक्ट होते हैं जिनमें समतुल्य वर्ण होते हैं, तो === ऑपरेटर अभी भी सही होगा। |
ओकैमल , स्मॉलटॉक | ए == बी |
a = b |
|
पास्कल | ए^ = बी^ |
a = b |
|
पर्ल | $ए == $बी |
$$a == $$b |
जब $a और $b स्केलर्स के संदर्भ हैं |
पीएचपी | $ए === $बी |
$a == $b |
जब$a और $b वस्तुएं हैं
|
पायथन | ए is बी |
a == b |
|
रूबी | ए.equएl?(बी) |
a == b |
|
स्कीम | (eq? ए बी) |
(equal? a b |
|
स्विफ्ट | a === b |
a == b |
जब a और b का वर्ग प्रकार होता है |
विजुअल बेसिक.एनईटी[inequality 1] | a Is b or object.ReferenceEquals(a, b) |
a = b or a.Equals(b) |
C# के समान |
ऑब्जेक्टिव-सी (कोको, जीएनयूस्टेप) | a == b |
[a is Equal:बी] |
जब a और bउ न वस्तुओं की ओर इशारा करते हैं जो उदाहरण हैं NSObject |
यह भी देखें
- द्विआधारी संबंध
- सामान्य ऑपरेटर संकेतन
- सशर्त (कंप्यूटर प्रोग्रामिंग)
- समानता (गणित)
- बराबर साइन
- लॉजिकल ऑपरेटर
- ऑपरेशन (गणित)
- ऑपरेटर (गणित)
- प्रचालक (कंप्यूटर प्रोग्रामिंग)
- अंतरिक्ष यान प्रचालक
- त्रैमासिक संबंध
नोट्स और संदर्भ
- ↑ Standard for Posit Arithmetic (2022)
- ↑ Contributors. "Comparing Objects". PHP Manual. PHP Group. Retrieved June 29, 2014.
{{cite web}}
:|author=
has generic name (help); External link in
(help)|author=
- ↑ "PHP: Comparison Operators - Manual". Retrieved July 31, 2008.
- ↑ Relational and Logical Operators of Mathematica
- ↑ Alexandrescu, Andrei (2010). The D Programming Language. Addison Wesley. p. 58. ISBN 978-0-321-63536-5.
- ↑ Used not only in ALGOL-like languages, but also in FORTRAN and BASIC
- ↑ As some programmers were confused by the dual meanings (bitwise operator, and logical connective) of these new symbols (according to Dennis Ritchie). Only the bitwise meaning of & and | were kept.
- ↑ Although Dennis Ritchie has suggested that this may have had to do with "economy of typing" as updates of variables may be more frequent than comparisons in certain types of programs
- ↑ A zero scalar value is interpreted as false while any non-zero scalar value is interpreted as true; this is typically used with integer types, similar to assembly language idioms.
- ↑ Brian Kernighan and Dennis Ritchie (1988) [1978]. The C Programming Language (Second ed.). Prentice Hall., 19
- ↑ Patent application: On May 14, 2003, US application 20,040,230,959 "IS NOT OPERATOR" was filed for the
ISNOT
operator by employees of Microsoft. This patent was granted on November 18, 2004.