जवाबों:
ऑपरेटर &
और &&
ऑपरेटर की तरह , डबल ऑपरेटर "शॉर्ट-सर्किट" ऑपरेटर है।
उदाहरण के लिए:
if(condition1 || condition2 || condition3)
यदि कंडीशन 1 सत्य है, तो शर्त 2 और 3 की जाँच नहीं की जाएगी।
if(condition1 | condition2 | condition3)
यह शर्तों 2 और 3 की जांच करेगा, भले ही 1 पहले से ही सच हो। जैसे-जैसे आपकी शर्तें काफी महंगी हो सकती हैं, आप उनका उपयोग करके एक अच्छा प्रदर्शन बढ़ा सकते हैं।
वहाँ एक बड़ा चेतावनी, NullReferences या इसी तरह की समस्याएं हैं। उदाहरण के लिए:
if(class != null && class.someVar < 20)
यदि कक्षा अशक्त है, तो class != null
गलत होने के बाद यदि कथन बंद हो जाएगा । यदि आप केवल & का उपयोग करते हैं, तो यह जांचने की कोशिश करेगा class.someVar
और आपको एक अच्छा मिलेगा NullReferenceException
। Or-Operator के साथ ऐसा कोई जाल नहीं हो सकता है क्योंकि यह संभावना नहीं है कि आप कुछ बुरा ट्रिगर करें, लेकिन यह ध्यान में रखना है।
कोई भी कभी भी एकल &
या |
ऑपरेटरों का उपयोग नहीं करता है , जब तक कि आपके पास एक डिज़ाइन नहीं है जहां प्रत्येक स्थिति एक फ़ंक्शन है जिसे निष्पादित किया जाना है। एक डिजाइन गंध की तरह लगता है, लेकिन कभी-कभी (शायद ही कभी) यह सामान करने का एक साफ तरीका है। &
ऑपरेटर "इन 3 कार्यों को चलाने, और यदि उनमें से एक झूठी देता है, किसी और ब्लॉक निष्पादित" करता है, जबकि |
"केवल किसी और ब्लॉक चलाने से कोई भी वापसी झूठी अगर" करता है - उपयोगी हो सकता है, लेकिन जैसा कि कहा, अक्सर यह एक डिजाइन है गंध।
हालांकि |
और &
ऑपरेटर का दूसरा उपयोग है : बिटवाइज़ ऑपरेशंस ।
&
और |
सशर्त संचालकों के रूप में एक हैक है, और यदि उन्हें कभी भी C / C ++ का उपयोग करने की आवश्यकता होती है, तो वे उन्हें परेशानी में डालेंगे: 1 && 2
यह सच है जबकि 1 & 2
गलत है।
&
इसका अर्थ यह बताने के लिए इस्तेमाल कर रहे हैं कि इसके लगभग हमेशा मतलब के अलावा: बिटवाइज़-एंड) ।
|| तार्किक या ऑपरेटर है। ऐसा लगता है कि आप मूल रूप से जानते हैं कि क्या है। इसका उपयोग सशर्त विवरणों में किया जाता है जैसे कि, जबकि, आदि।
condition1 || condition2
या तो कंडीशन 1 या कंडीशन 2 सही है या नहीं।
| बिटवाइज़ या ऑपरेटर है। इसका उपयोग दो नंबरों पर काम करने के लिए किया जाता है। आप प्रत्येक संख्या के प्रत्येक बिट को व्यक्तिगत रूप से देखते हैं और, यदि बिट्स में से एक कम से कम संख्या में 1 है, तो परिणामी बिट 1 भी होगा। कुछ उदाहरण निम्नलिखित हैं:
A = 01010101
B = 10101010
A | B = 11111111
A = 00000001
B = 00010000
A | B = 00010001
A = 10001011
B = 00101100
A | B = 10101111
उम्मीद है कि समझ में आता है।
इसलिए पिछले दो सवालों का जवाब देने के लिए, मैं यह नहीं कहूंगा कि इसके अलावा "दोनों ऑपरेटरों के बीच अंतर पता है।" वे विनिमेय नहीं हैं क्योंकि वे दो पूरी तरह से अलग चीजें करते हैं।
अच्छा प्रश्न। ये दोनों ऑपरेटर PHP और C # में समान काम करते हैं।
|
एक बिटवाइज़ है या। यह उनके बिट्स द्वारा दो मूल्यों की तुलना करेगा। जैसे 1101 | 0010 = 1111. बिट विकल्पों का उपयोग करते समय यह बेहद उपयोगी है। जैसे Read = 01 (0X01) Write = 10 (0X02) Read-Write = 11 (0X03)। एक उपयोगी उदाहरण फ़ाइलों को खोलना होगा। एक सरल उदाहरण होगा:
File.Open(FileAccess.Read | FileAccess.Write); //Gives read/write access to the file
||
एक तार्किक OR है। यह वह तरीका है जो अधिकांश लोग OR के बारे में सोचते हैं और उनकी सच्चाई के आधार पर दो मूल्यों की तुलना करते हैं। जैसे मैं स्टोर जा रहा हूं या मैं मॉल जाऊंगा। यह एक कोड में सबसे अधिक इस्तेमाल किया जाता है। उदाहरण के लिए:
if(Name == "Admin" || Name == "Developer") { //allow access } //checks if name equals Admin OR Name equals Developer
PHP संसाधन: http://us3.php.net/language.operators.bitwise
C # संसाधन: http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx
http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx
|
में एक तार्किक या जब बूलियन पर लागू होता है । जैसा कि आपके जुड़े संदर्भ बताता है। व्यवहार में, अंतिम परिणाम एक ही है जैसे कि यह एक बिटवाइज़ ऑपरेटर था, क्योंकि बिटवाइज़ के मान true
और false
ऐसे होते हैं कि बिटवाइज़ या उनके मान एक तार्किक या करता है के समान सटीक परिणाम उत्पन्न करता है। वह (int)(bool1 | bool2)
== है ((int)bool1) | ((int)bool2)
।
जावा में सरल उदाहरण
public class Driver {
static int x;
static int y;
public static void main(String[] args)
throws Exception {
System.out.println("using double pipe");
if(setX() || setY())
{System.out.println("x = "+x);
System.out.println("y = "+y);
}
System.out.println("using single pipe");
if(setX() | setY())
{System.out.println("x = "+x);
System.out.println("y = "+y);
}
}
static boolean setX(){
x=5;
return true;
}
static boolean setY(){
y=5;
return true;
}
}
आउटपुट:
using double pipe
x = 5
y = 0
using single pipe
x = 5
y = 5
& - (कंडीशन 1 और कंडीशन 2): दोनों मामलों की जांच करता है, भले ही पहला झूठ हो
&& - (स्थिति 1 और& स्थिति 2): यदि मामला गलत है, तो दूसरे मामले की जाँच करने के लिए परेशान न हों
&& - ऑपरेटर आपके कोड को तेज़ी से चलाएगा, पेशेवर रूप से और शायद ही कभी उपयोग किया जाता है
| - (स्थिति 1 | स्थिति 2): यदि मामला सत्य है तो भी दोनों मामलों की जाँच करता है
|| - (स्थिति 1 || स्थिति 2): पहला मामला सच होने पर दूसरे मामले की जाँच करने के लिए परेशान न हों
|| - ऑपरेटर आपके कोड को तेज़ी से चलाएगा, पेशेवर रूप से | शायद ही कभी इस्तेमाल किया जाता है
rarely used
? सभी इस बात पर निर्भर करते हैं कि आपको क्या चाहिए या क्या करना है।
एकल पाइप, |, बिटवाइज़ ऑपरेटरों में से एक है।
विकिपीडिया से:
सी प्रोग्रामिंग भाषा परिवार में, बिटवाइज़ या ऑपरेटर "है |" (पाइप)। फिर से, इस ऑपरेटर को अपने बूलियन "तार्किक या" समकक्ष के साथ भ्रमित नहीं होना चाहिए, जो अपने ऑपरेंड को बूलियन मान के रूप में मानता है और लिखा है "||" (दो पाइप)।
उनकी गणितीय परिभाषा के अनुसार, OR और AND बाइनरी ऑपरेटर हैं; वे LHS और RHS शर्तों की परवाह किए बिना सत्यापित करते हैं, इसी तरह से | तथा &।
|| LHS स्थिति पूरी नहीं होने पर && और उन्हें रोककर OR और ऑपरेटरों के गुणों में परिवर्तन करें।
| ऑपरेटर एक बिटवाइंड या अपने दो ऑपरेंड करता है (जिसका अर्थ है कि दोनों पक्षों को इसके लिए असत्य का मूल्यांकन करना चाहिए ताकि वह गलत हो) ऑपरेटर को केवल दूसरे ऑपरेटर का मूल्यांकन करना होगा, अगर उसे इसकी आवश्यकता है।
http://msdn.microsoft.com/en-us/library/kxszd0kx(VS.71).aspx
http://msdn.microsoft.com/en-us/library/6373h346(VS.71).aspx
सिंगल पाइप "|" "बिटवाइज़" है या इसका उपयोग केवल तब किया जाना चाहिए जब आपको पता हो कि आप क्या कर रहे हैं। डबल पाइप "||" एक तार्किक है या, और तार्किक कथनों में इस्तेमाल किया जा सकता है, जैसे "x == 0 || x == 1"।
यहाँ एक उदाहरण है कि बिटवाइज़ या क्या करता है: यदि a = 0101 और b = 0011, तो a | b = 0111 | यदि आप एक तर्क प्रणाली के साथ काम कर रहे हैं जो किसी भी गैर-शून्य को सच मानती है, तो बिटकॉइन या तार्किक या उसी तरह कार्य करेगा, लेकिन यह प्रतिपक्ष (बिटवाइज़ और, "और") नहीं होगा। इसके अलावा बिटवाइज़ या शॉर्ट सर्किट मूल्यांकन नहीं करता है।
bool
शॉर्ट सर्किटिंग के बिना प्रकारों पर भी इस्तेमाल किया जा सकता है ।