লজিকাল অপারেটরদের লিখিত সংস্করণ


96

এই একমাত্র জায়গা আমার দেখা হয় and, orএবং notC ++ প্রকৃত অপারেটার হিসেবে তালিকাভুক্ত। নেটবিয়েন্সে যখন আমি একটি পরীক্ষার প্রোগ্রাম লিখেছিলাম, তখন আমি রেড রেখাটিটি এমনভাবে পেয়েছিলাম যেন একটি সিনট্যাক্স ত্রুটি রয়েছে এবং ওয়েবসাইটটি ভুল হয়েছে তা অনুধাবন করা হয়েছে, তবে এটি নেটবিনস যা ভুল তা কারণ এটি সংকলিত এবং প্রত্যাশার মতো চলছে।

দেখতে পাচ্ছি !উপর শ্রেষ্ঠত্ব দান করা হচ্ছে notকিন্তু পাঠযোগ্যতা and&& orতাদের ব্যাকরণগত ভাই তার চেয়ে অনেক বেশী বলে মনে হয়। লজিকাল অপারেটরগুলির এই সংস্করণগুলি কেন বিদ্যমান এবং কেন আপাতদৃষ্টিতে কেউ এটি ব্যবহার করে না? এটি কি সত্যিই বৈধ সি ++ বা ভাষার সাথে অন্তর্ভুক্ত সি এর সাথে কোনও ধরণের সামঞ্জস্যতা?


4
\ আমি তার সমস্ত কোড পুনরায় লিখি
সীমিত প্রায়শ্চিত্ত

4
"ক্লিন কোড" এর চেতনায় আমি ব্যক্তিগতভাবে লেখার অভ্যাস ||এবং &&সম্ভবত এমনকি !মাঝে মাঝে এড়িয়ে যাওয়ার পরামর্শ দিই । বিট ম্যানিপুলেশন অপারেটরগুলির সাথে সম্ভাব্য বিভ্রান্তির কথা উল্লেখ না করে শব্দগুলি "লাইন গোলমাল" এরপরে সর্বদা ভাল।
ইছথিও

4
@ ইচ্ছুও এটি সর্বদা সঠিক নয়। প্রচুর শব্দ পড়ার চেয়ে অনেক বেশি চিহ্ন পড়ার এবং সেগুলির অর্থ জানতে এটি দ্রুততর।
ভালান্টিন

একজন মানব পাঠকের জন্য যা পরিষ্কার তা "জেস্টাল্ট" এর উপর নির্ভর করে। কখনও কখনও কিছু গণ্ডগোল শব্দটির চেয়ে একটি চিহ্ন আরও পরিষ্কার হতে পারে, তবে এই ক্ষেত্রে তা হয় না। এবং, ইংরাজী ভাষার সাধারণ শব্দগুলি কিছুটা অদ্ভুত প্রোগ্রামিং ভাষার কিছু অদ্ভুত বিশেষ চিহ্নগুলির চেয়ে আরও সার্বজনীন ...
ইচ্ছুও

4
এটি বলার andandor
বিড়ম্বনাটি

উত্তর:


114

তাদের হেডারে সি থেকে উদ্ভূত হয়েছিল <iso646.h>। সেই সময় এমন কীবোর্ড ছিল যা প্রয়োজনীয় চিহ্নগুলি &&(উদাহরণস্বরূপ) টাইপ করতে পারেনি , সুতরাং শিরোনামটিতে এমন রয়েছে #defineযা তাদের এটি করার ক্ষেত্রে সহায়তা করবে, (আমাদের উদাহরণস্বরূপ) andহতে হবে বলে সংজ্ঞায়িত করে &&। অবশ্যই, সময়ের সাথে সাথে এর ব্যবহার কম হয়ে গেল।

C ++, তারা হয়ে ওঠে কি নামে পরিচিত বিকল্প টোকেন । আপনাকে যা না একটি অনুবর্তী কম্পাইলার এই টোকেন ব্যবহার করতে কিছু অন্তর্ভুক্ত করতে হবে (যেমন, সি ++ - ified সি শিরোনামের সংস্করণ, <ciso646>, ফাঁকা)। বিকল্প টোকেনগুলি হ'ল বানান ব্যতীত নিয়মিত টোকেনের মতো। সুতরাং পার্সিং সময় andহয় ঠিক হিসাবে একই &&, এটা ঠিক একই জিনিস বানান একটি ভিন্ন উপায়।

তাদের ব্যবহার হিসাবে: কারণ এগুলি খুব কমই ব্যবহৃত হয়, সেগুলি ব্যবহারের চেয়ে এটি প্রায়শই বেশি অবাক এবং বিভ্রান্তিকর হয় it আমি নিশ্চিত যে এটি যদি সাধারণ হয় তবে এগুলি পড়তে খুব সহজ হত, তবে মানুষ এতটা অভ্যস্ত &&এবং ||অন্য যে কোনও কিছুই কেবল বিভ্রান্তিকর হয়ে ওঠে।

সম্পাদনা: যদিও আমি এটি পোস্ট করেছি তখন থেকে আমি তাদের ব্যবহারে খুব সামান্য বৃদ্ধি পেয়েছি। আমি এখনও তাদের এড়ানো।


তাহলে কি এই বিকল্প টোকেনগুলির ব্যাখ্যাটি কেবল একটি সংকলক বৈশিষ্ট্য বা এটি সি ++ নির্দিষ্টকরণে রয়েছে?
ত্রুটিযুক্ত

4
@ কেভন: এটি স্ট্যান্ডার্ডের ২.৩ বিভাগে নির্দিষ্ট করা হয়েছে; এটি একটি ভাষা বৈশিষ্ট্য।
GManNickG

15
আমি ব্যক্তিগতভাবে মনে করি তারা অনেক উন্নত ... তবে তারপরে আমি পাইথন পক্ষপাতদুষ্ট। আমি জানি না কেন কিছু লোকেরা কেন এটি জোর করে না তা কোড নয় ...
ম্যাথিউ এম।

সুতরাং এগুলি হেডার ফাইলটি অন্তর্ভুক্ত না করে সিটিতে বৈধ নয়? আমি অবাক হই যে এগুলি সবাই ব্যবহার করে না; তারা পাইথনকে এত বেশি পাঠযোগ্য করে তোলে।
এন্ডোলিথ

4
কমপক্ষে ভিজ্যুয়াল স্টুডিও 2015 সিটিপি 6 আমার orবা শিরোনামটি অন্তর্ভুক্ত না করে পছন্দ করে নি not
usr1234567

19

এগুলির ব্যবহারযোগ্যতা (কীবোর্ড / ডিসপ্লের স্বাদগুলিতে অক্ষর সমর্থন) এবং সাধারণ পাঠযোগ্যতার জন্য বিদ্যমান রয়েছে, তবে আজকের দিনে আরও বেশি স্পষ্টভাবে প্রকাশিত হওয়ার আরও একটি কারণ রয়েছে। উত্তর প্রায় কেউই এখানে , এখানে , অথবা এমনকি প্রধান উত্তর এখানেমূল কারণটি বানান আমাদের মধ্যে অনেকে প্রতীক সংস্করণগুলির চেয়ে শব্দ সংস্করণ পছন্দ করে (এবং অন্যান্য ভাষাগুলি সেগুলি ব্যবহারের একটি মূল কারণ): বাগগুলি। সংস্করণ শব্দের মধ্যে পার্থক্য খুব দৃশ্যমান। প্রতীক সংস্করণগুলির মধ্যে পার্থক্যগুলি উল্লেখযোগ্যভাবে কম, তুলনামূলকভাবে আরও বেশি পরিমাণে বাগগুলি প্ররোচিত করার ক্ষেত্রে: "x | y" খুব বেশি "x || y" নয়, তবুও যখন আমাদের অনেকগুলি বৃহত্তর অভিব্যক্তিটিতে এম্বেড থাকে পার্থক্য মিস করুন। এটি অ্যাসাইনমেন্ট বনাম সমতা অপারেটরের সাধারণ দুর্ঘটনার মিশ্রণের অনুরূপ similar এই কারণে আমি শব্দ সংস্করণের পক্ষে নিজেকে প্রতীকী সংস্করণগুলি থেকে ছাড়িয়েছি (এটি সহজ ছিল না)। আমি বরং লোকেদের বাগের চেয়ে পুরানো জিনিসগুলির প্রতি আমাদের ভালবাসার কারণে কেউ এটিকে ডাবল নিতে চাই।


4
দুর্ভাগ্যক্রমে, ভিজ্যুয়াল স্টুডিওতে (ভিএস ২০১৩ হিসাবে), /Zaবিকল্প কীওয়ার্ডগুলিকে সমর্থন করার জন্য আপনাকে অবশ্যই একটি নির্দিষ্ট সংকলক বিকল্প ( ) নির্ধারণ করতে হবে (দেখুন stackoverflow.com/a/555524/368896 )। সম্ভবত এটির অন্যান্য প্রভাবও রয়েছে। সুতরাং, ভিজ্যুয়াল স্টুডিওতে, এই পরামর্শটি নেওয়া নিরাপদ নয়।
ড্যান নিসেনবাউম

FWIW / - হিসাবে আমি অপারেটার প্রায় শূণ্যস্থান করা x | yপর্যাপ্ত চাক্ষুষরূপে থেকে স্বতন্ত্র (Monospaced ফন্ট) হল x || y, কিন্তু আমি খুঁজে পাব !যেমন মধ্যে if (!f(xyz) && ...তুলনায় মিস করা আরো সহজ if (not f(xyz) && ...
টনি ডেলরয়

@ টনি ডি যখন আপনি অপারেটরগুলির চারপাশে স্পেস রাখেন, এটি আপনার ব্যক্তিগত কনভেনশন এবং এটি পাঠকের কাছে স্পষ্ট নয়। কিন্তু ব্যবহার প্রাকৃতিক ভাষা শব্দ পছন্দ and, orএবং notএকটি বুলিয়ান এক্সপ্রেশনে, আসলে পাঠযোগ্যতা উন্নতি তাছাড়াও এটি বিট হেরফেরের করতে পার্থক্য হাইলাইট করে। সুতরাং
আইএমএইচএও

@ ড্যাননিজেনবাউম আমি সি / সি ++> ভাষা> ভাষা এক্সটেনশানগুলি অক্ষম করুন এর ফলে এই অপশনটি পেয়েছি , সুতরাং পার্শ্ব প্রতিক্রিয়া আশা করা তুলনামূলকভাবে নিরাপদ;)
ওল্ফ

6
আপনি কী জানেন যে কতগুলি পাইথন বাগ প্রবর্তিত হয়েছে কারণ শব্দগুলি andএবং orপক্ষপাতদুষ্ট লোকদের তাদের কীভাবে কাজ করা উচিত তা চিন্তাভাবনা করে? উদাহরণস্বরূপ এর if (a == b or c)পরিবর্তে if (a == b || a == c)- স্ট্যাকওভারফ্লোতে এই জাতীয় কিছু প্রায় পপ আপ হয়। ইংরেজী ভাষা থেকে সংযোগ বিচ্ছিন্ন করা বিমূর্ত প্রতীকগুলি এই ত্রুটিগুলি হ্রাস করে।
মার্ক রান্সম

10

সি ++ এ, তারা আসল কীওয়ার্ড। সি তে, তারা ম্যাক্রোগুলি সংজ্ঞায়িত হয়েছে <iso646.h>Http://web.archive.org/web/20120123073126/http://www.dinkumware.com/manouts/?manual=compleat&page=iso646.html দেখুন ।


6
প্রযুক্তিগতভাবে তারা বিকল্প টোকেন, কীওয়ার্ড নয়। :)
GManNickG

4
@ জিএমান: +1 খুব ভাল কল, যদিও, ডিনকামওয়্যার পৃষ্ঠা তাদের কীওয়ার্ড বলে, তাই, আমি মনে করি তারা এই পার্থক্য সম্পর্কে খুব বেশি যত্ন নেন না।
ক্রিস জেস্টার-ইয়ং


সুতরাং, এমএসভিসি তাদের সি ++ এ বাক্স থেকে বাইরে সমর্থন করে তবে সি তে নয়?
rwst

4
@ rwst আমি বিশেষত এমএসভিসির বিষয়ে মন্তব্য করতে পারি না, তবে যদি এটি সি ++ এবং সি মান বিশ্বস্তভাবে প্রয়োগ করে, তবে বাস্তবে এটি হবে। আরও দেখুন: স্ট্যাকওভারফ্লো.com
ক্রিস জাস্টার-ইয়ং

2

andএবং &&কার্যত সি ++ তে একই রকম। andএবং orঅপারেটরদের সত্যিই বৈধ সি ++ এবং ভাষা মান অংশ।

একটি দৃ concrete় উদাহরণ সহ অন্যান্য উত্তরের বিস্তারিত বর্ণনা করার জন্য, কেবল "পাঠযোগ্যতা" andবেশি পছন্দ করা ছাড়াও আরও একটি কারণ রয়েছে &&। যখন একটি যৌক্তিক এআ্যান্ড বলতে বোঝায় তখন স্পষ্টভাবে "এবং" বানানটি সূক্ষ্ম বাগের সম্ভাবনাটি সরিয়ে দেয়।

এই বিবেচনা:

int x = 3;
int y = 4;

// Explicitly use "and"
if (x and y) {
    cout << "and: x and y are both non-zero values" << endl;
}

// Using "&&"
if (x && y) {
    cout << "&&: x and y are both non-zero values" << endl;
}

// Oops! I meant to type "&&"!
if (x & y) {
    cout << "&: x and y are both non-zero values" << endl;
}
else {
    cout << "How did I get here?" << endl;
}

তিনটি ইফ-স্টেটমেন্ট সংকলন করবে তবে শেষটির অর্থ পুরোপুরি আলাদা এবং অযৌক্তিক কিছু!

আপনি যদি সর্বদা andলজিকাল এন্ডের অর্থ বোঝাতে ব্যবহার করেন তবে আপনি দুর্ঘটনাক্রমে কোনও একক "&" টাইপ করতে পারবেন না এবং আপনার কোডটি সফলভাবে সংকলন করতে এবং রহস্যজনক ফলাফল নিয়ে চালাতে পারবেন না।

আরেকটি ভাল অনুশীলন: দুর্ঘটনাক্রমে "এবং" এর একটি চরিত্র ছেড়ে দেওয়ার চেষ্টা করুন এবং দেখুন কী ঘটে। ;)


4
এটি আসলে প্রশ্নের উত্তর নয়। আপনি যা বলছেন তা আরও সুগঠিত বলে কেবল এটি আপনি উল্লেখ করেছেন। লিখিত সংস্করণগুলি কীভাবে কার্যকর হয় সে সম্পর্কে ওপি জিজ্ঞাসা করেছিল, কোনটি ভাল নয়। এবং অন্য কেউ ইতিমধ্যে একই পয়েন্ট তৈরি করার চেষ্টা করছেন যা আপনি করার চেষ্টা করছেন।
নিকল বোলাস

এটি সত্যিই আরও কার্যকর তথ্য সরবরাহ করে না তবে আমি উত্তরে " যুক্ত করব andএবং &&
কার্যত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.