(0 <5 <3) কেন সত্য ফিরে আসে?


348

আমি jsfiddle.net এ চারপাশে খেলছিলাম এবং আমি আগ্রহী যে কেন এই প্রত্যাবর্তন সত্য?

if(0 < 5 < 3) {
    alert("True");
}

সুতরাং এটি করে:

if(0 < 5 < 2) {
    alert("True");
}

তবে এটি হয় না:

if(0 < 5 < 1) {
    alert("True");
}

এই ছটফটানি কি কখনও কাজে লাগে?


12
আপনি wtfjs.com জানেন ?
হারম্যান

1
হা! না আমি এর আগে কখনও দেখিনি।
punkrockbuddyholly

আহ, অন্তর্নিহিত ধরণের রূপান্তরগুলির আনন্দ।
জার্গ ডব্লু মিট্টাগ

4
কখনও কাজে লাগে? সম্ভবত অবসন্নতার জন্য। :-)
Icode4food

কেন? এছাড়াও, যদি আপনি কেবল তার প্রয়োজনীয় পরিস্থিতিতেগুলি খুঁজে পেতে পারেন তবে কোনও কিছু কার্যকর। সত্য, এটি অন্যের তুলনায় কম প্রায়ই প্রয়োজন হয় তবে অনেক সময় এবং খুব কম সময়ে তাদের উপস্থিতি থাকতে পারে যেখানে এটি ঠিক কাজের জন্য হাতিয়ার হতে পারে।
অস্থায়ী_ ব্যবহারকারী_নাম

উত্তর:


440

ক্রিয়াকলাপের ক্রম (0 < 5 < 3)জাভাস্ক্রিপ্টে ব্যাখ্যা করা হয় ((0 < 5) < 3)যা উত্পাদন করে (true < 3)এবং সত্য হিসাবে এটি গণনা করা হয় যা এটি সত্য হিসাবে ফিরে আসে।

এটাও কেন (0 < 5 < 1)আয় মিথ্যা, (0 < 5)সত্য 'ফেরত পাঠায়, যা ব্যাখ্যা করা হয় 1, যার ফলে (1 < 1)


158
এবং জাভাস্ক্রিপ্ট পাইথন নয়। :-)
আরএসেন্না

1
আমি যুক্ত করতে আমার প্রশ্নটি সম্পাদনা করার সময় আপনি উত্তর দিয়েছিলেন if(0 < 5 < 1) == false। সব এখন পরিষ্কার, ধন্যবাদ :)
পাঙ্ক্রোকবুদ্ধিহলি

28
ঠিক ঠিক, পাইথন একমাত্র ভাষা যা আমি এই সিনট্যাক্সটির সাথে চেতনা হিসাবে জানি, ((0 < 5) && (5 < 3))সম্ভবত অন্যরা রয়েছে তবে আমি সেগুলি সম্পর্কে জানি না।
অ্যালান গ্যালেনস

18
@ অ্যালান: ম্যাথমেটিকার আরেকটি উদাহরণ।
জোরেেন

2
আইএমএইচও জাভাস্ক্রিপ্ট সংখ্যার সাথে বুলিয়ান তুলনা করার সময় টাইপরর বাড়াতে হবে কারণ এটি কোনও তাত্পর্যপূর্ণ নয়।
মিশা পেরেকোস্কি

63

আমার অনুমান কারণ 0 < 5সত্য, এবং true < 3কাস্ট পায় 1 < 3যা সত্য।


7
এখানে কোনও ingালাই নেই। কাস্ট হ'ল একটি অপারেটর, যা প্রোগ্রামার স্পষ্টভাবে কোনও প্রকারের পরীক্ষা করতে ব্যবহার করে । এটি একটি বুলিয়ান থেকে পূর্ণসংখ্যায় অন্তর্নিহিত রূপান্তর।
এরিকসন

4
@ এরিকসন, সত্যই ... এখানে কি শব্দার্থবিজ্ঞানের উপর ঝুলতে হবে আমাদের?
ক্যাফগীক

2
এরিকন নিয়ে চিন্তা করবেন না। আমি শব্দার্থক শব্দটিরও অপব্যবহার করি। :)
মতিন উলহাক

9
যে কোনও ক্ষেত্রে সঠিক শব্দটি হ'ল জবরদস্তি । এবং হ্যাঁ, এরিকসন এটির সম্পূর্ণ নিশ্চিততার সাথে আংশিক ভুল wrong একটি জবরদস্তি যে কোনও ক্ষেত্রে এক ধরণের নিক্ষেপ সাধারণত হয় (তবে এটি কেবল একটি সম্মেলন) আপনি স্পষ্ট ধরনের রূপান্তর প্রকাশ করতে "কাস্ট" শব্দটি ব্যবহার করেন। প্রকার রূপান্তর == টাইপ ingালাই।
জ্যাক

1
পুরোপুরি সোফিস্টদের ... উত্তরটি 'ল্যাটিক্যালি' যাইহোক
ভালই লাগছে

21

সম্ভবত কারণ trueহিসাবে মনে করা হয় 1, যাতে

0 < 5 < 3  -->  true < 3 -->  1 < 3  --> true


10

এই প্রশ্নটি সদা কার্যকর কিনা তা আপনার প্রশ্নের হিসাবে: আমি মনে করি যে এটির ক্ষেত্রে এমন কিছু ঘটনা ঘটতে পারে যেখানে কনডেন্সড কোডটি আপনি পরে যা করছেন) তবে এর উপর নির্ভর করা আপনার কোডটির বোধগম্যতাটিকে গুরুতরভাবে হ্রাস করবে।

এটি একরকম বড় / প্রকাশের অংশ হিসাবে পোস্ট / প্রাক ইনক্রিমেন্ট / হ্রাস ব্যবহার করার মতো। এই কোডের ফলাফল কী এক নজরে রয়েছে তা আপনি নির্ধারণ করতে পারেন?

int x = 5;
int result = ++x + x++ + --x;

দ্রষ্টব্য: এই কোডের সাহায্যে আপনি কখনও কখনও ভাষা এবং সংকলকের উপর নির্ভর করে বিভিন্ন ফলাফলও পেতে পারেন।

নিজের এবং পরবর্তী লোকটি আপনার কোডটি পড়বে তার পক্ষে জীবন সহজ করা ভাল ধারণা । আপনি আসলে কী হতে চান তারপরে পরিষ্কারভাবে লিখুন তবে বুলেঁসের অন্তর্নিহিত রূপান্তরের মতো পার্শ্ব প্রতিক্রিয়াগুলির উপর নির্ভর করে।


কৌতূহলের বাইরে, result18?
punkrockbuddyholly

5
@ মিঃমিস্টারমন: আমি জাভাস্ক্রিপ্ট সম্পর্কে নিশ্চিত নই, তবে জাভা এবং সি # তে মূল্যায়নের বাম থেকে ডানে বামে গ্যারান্টিযুক্ত এবং ফলাফলটি সত্যই 18। কিছু ভাষায় যেমন সি এবং সি ++ তে তা হওয়ার নিশ্চয়তা নেই বাম থেকে ডানে মূল্যায়ন করা হয়েছে এবং আপনি আপনার সংকলক দ্বারা সংযুক্ত অপটিমাইজেশনের উপর নির্ভর করে বিভিন্ন ফলাফলের সাথে শেষ করতে পারেন।
জাচ জনসন

9

প্রশ্নের দ্বিতীয় অংশের উত্তর, "এই স্নিগ্ধতা কি কখনও কার্যকর?" পূর্ববর্তী উত্তর দ্বারা উল্লিখিত হিসাবে সম্ভবত হ'ল না, যদি সত্যই এটি ভাষার (জাভাস্ক্রিপ্ট) একগুচ্ছ হয় তবে এটি সত্যই 1-তে প্রেরণ করা হয় তবে প্রোগ্রামারটি সাধারণভাবে 1 এবং সত্য (এবং 0 এবং মিথ্যা) হিসাবে না একই জিনিস.

তবে আপনার যদি 1 এর মানসিক মডেলটি সত্য এবং 0 টি মিথ্যা হয়, তবে এটি সমস্ত ধরণের সুন্দর বুলিয়ান কৌশলগুলি নিয়ে আসে যা অত্যন্ত কার্যকর, শক্তিশালী এবং সরাসরি direct উদাহরণস্বরূপ, আপনি এ> 100 এর ফলাফলের সাথে সরাসরি একটি কাউন্টারকে বাড়িয়ে দিতে পারেন, যা A এর 100 এর চেয়ে বেশি হলে কাউন্টারটি বাড়িয়ে তুলবে This মূর্খ হতে পারে।

অ্যারে ভাষা এপিএল এর একটি দুর্দান্ত উদাহরণ হ'ল অ্যারেতে আইটেমের সংখ্যা গণনা করা (যা বলা হয়) 100 এর চেয়ে বেশি:

+/A>100

যেখানে যদি 5 এর আইটেম অ্যারে 107 22 256 110 3 হয় তবে:

A>100

5 আইটেম বুলিয়ান অ্যারে উত্পাদন করে:

1 0 1 1 0

এবং এই বুলিয়ান ফলাফল সংক্ষেপ:

+/1 0 1 1 0

চূড়ান্ত উত্তর দেয়:

3

এই প্রশ্নের যেখানে এই কৌশল খুবই উপযোগী হতে হবে একটি নিখুঁত উদাহরণ বিশেষত যদি সমস্যা কিনা তা নির্ধারণ করতে মি আউট এন বুলিয়ান মান সত্য সাধারণ হয়।

তিনটি বুলিয়ানের মধ্যে কমপক্ষে দু'জন সত্য কিনা তা পরীক্ষা করে দেখুন


7

এটা সহজ.

(0 < 5 < 3)

বাম থেকে ডান দিয়ে শুরু করুন যাতে এটি প্রথম 0 <5 এর মূল্যায়ন করে it এটি কি সত্য? হ্যাঁ. যেহেতু সত্য = 1, এটি 1 <3 মূল্যায়ন করে যেহেতু 1 3 এর চেয়ে কম তাই এটি সত্য।

এখন এই সাথে

 (0 < 5 < 1)

0 এর চেয়ে কম 5? হ্যাঁ. সুতরাং এটিকে সত্য করে দিন যার অর্থ ১। এখন সেই সত্যটি মাথায় রেখে এটি মূল্যায়ন করে (1 <1)। 1 1 এর চেয়ে কম? না, সুতরাং এটি মিথ্যা। এটি সমান হতে হবে।


4

এটি 0 <5 এর মূল্যায়ন করছে যা 1 <3 সত্য হলে 1টি ফিরে আসবে?

সি # আপনাকে এই "অপারেটর <<" করতে দেয় '' বুল 'এবং' ইনট 'টাইপের অপারেন্ডগুলিতে প্রয়োগ করা যাবে না


কখনও কখনও আমি গতিশীল ভাষায় সি # এর কঠোরতা মিস করি।
আরমান ম্যাকহায়টিভ

4

আমি কিছুক্ষণ আগে ওবজ-সি-তে গিয়েছিলাম এবং এটি দেখে খুব আশ্চর্য হয়ে গিয়েছিলাম। এই জাতীয় কিছু করে আমি যে ফলাফলগুলি চেয়েছিলাম তা পেয়েছি:

if(0 < 5  && 5 < 3) {
alert("True");}

কোনটি অবশ্যই মিথ্যা তাই আপনি সেই "সত্য" সতর্কতাটি পাবেন না। খুশী আমি এটি পড়েছি, আমি এখন জানি কেন।


4

পাইথন ছাড়াও কফিস্প্রিপ্ট হ'ল অন্য ভাষা যা শিকলযুক্ত তুলনা সমর্থন করে, সুতরাং ভ্যানিলা জেএসে 3 < x < 10রূপান্তরিত হবে(3 < x && x < 10)



1

গণিত অপারেটরের মাধ্যমে পরিচালিত একটি বুলিয়ান অপারেন্ড একটি নম্বর প্রদান করে। আমরা এটি পরীক্ষা করে দেখুন

true + 1  which gives you 2.

সুতরাং 0 < 5, গণিত অপারেটর (<) দিয়ে পরিচালিত ফিরে আসা বুলিয়ান (সত্য) একটি নম্বর প্রদান করবে। সুতরাং এটি 1 <3 এ ফোটায় যা ফিরে আসেtrue


1

কারণ 0 এর চেয়ে কম হয় 5 তারপর এটি সত্যটি ফিরে আসে এবং ডিফল্টরূপে সত্য সহ যা কিছু হয় এবং 1 তে যা এখনও 3 এর চেয়ে কম যা মূল্যায়ন করে আবার সত্য হয়


0

আপনার ফলাফলগুলি সংখ্যা হিসাবে চিহ্নিত করার চেষ্টা করুন ()

if(Number(0) < Number(5) < Number(3)) {
    alert("True");
}

অথবা এটি চেষ্টা করুন:

if(Number(0) < Number(5) && Number(5) < Number(3)) {
    alert("True");
}

আমি এটি গুগল করেছিলাম কারণ আমি পাচ্ছি (3 >= 20) //returning trueএবং আমার ধারণা জাভাস্ক্রিপ্টটি 3বুলিয়ান হিসাবে যাচাই করার চেষ্টা করছিল কারণ স্ট্রিং আকারে মুদ্রণ করা elm.getAttribute();ফাংশনটি থেকে আমি এই মূল্য পাচ্ছিলাম console.log();

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