সি তে বুলিয়ান টাইপ সম্পর্কিত
১৯৯৯ সালে, সি ভাষায় বেশ কিছুটা দেরিতে একটি বুলিয়ান প্রকার চালু করা হয়েছিল। তার আগে, সি তে কোনও বুলিয়ান টাইপ ছিল না তবে পরিবর্তে int
সমস্ত বুলিয়ান অভিব্যক্তির জন্য ব্যবহৃত হত । সুতরাং সমস্ত লজিকাল অপারেটর যেমন > == !
ইত্যাদির int
মান 1
বা একটি ফেরত 0
।
অ্যাপ্লিকেশনগুলিতে বাড়িতে তৈরি জাতীয় ধরণের ব্যবহারের জন্য এটি রীতি ছিল typedef enum { FALSE, TRUE } BOOL;
যা int
এগুলি আকারের আকার থেকেও ফোটায়।
সি ++ এর মধ্যে আরও ভাল এবং স্পষ্টত বুলিয়ান প্রকার bool
ছিল, যা 1 বাইটের চেয়ে বড় নয়। সিতে বুলিয়ান প্রকার বা এক্সপ্রেশনগুলি সবচেয়ে খারাপ ক্ষেত্রে 4 বাইট হিসাবে শেষ হবে। সি ++ এর সাথে সামঞ্জস্যের কিছু পদ্ধতি সি -৯ স্ট্যান্ডার্ডের সাথে সিতে প্রবর্তিত হয়েছিল। সি এর পরে একটি বুলিয়ান টাইপ _Bool
এবং শিরোনামও পেল stdbool.h
।
stdbool.h
সি ++ এর সাথে কিছু সামঞ্জস্যতা সরবরাহ করে। এই শিরোনামটি ম্যাক্রো bool
(সি ++ কীওয়ার্ডের মতো একই বানান) সংজ্ঞা দেয় যা প্রসারিত হয় _Bool
, একটি প্রকার যা একটি ছোট পূর্ণসংখ্যার প্রকার, সম্ভবত 1 বাইট বৃহত্তর। একইভাবে, শিরোনামটি দুটি ম্যাক্রো true
এবং false
, সি ++ কীওয়ার্ড হিসাবে একই বানান সরবরাহ করে তবে পুরানো সি প্রোগ্রামগুলিতে পশ্চাদপটে সামঞ্জস্যের সাথে । অতএব true
এবং false
প্রসারিত 1
এবং 0
সি এবং তাদের প্রকার int
। এই ম্যাক্রোগুলি আসলে বুলিয়ান ধরণের নয় যা সম্পর্কিত সি ++ কীওয়ার্ডগুলির মতো হবে।
একইভাবে, পশ্চাদপটে সামঞ্জস্যের উদ্দেশ্যে, সি-তে লজিকাল অপারেটররা আজও এটি ফিরিয়ে দেয় int
, যদিও সি আজকাল বুলিয়ান টাইপ পেয়েছিল। সি ++ এ থাকাকালীন, লজিকাল অপারেটররা a bool
। সুতরাং একটি অভিব্যক্তি যেমন sizeof(a == b)
একটি int
সি এর মধ্যে একটি আকার দিতে হবে , কিন্তু একটি সি এর আকার bool
++।
শর্তসাপেক্ষ অপারেটর সম্পর্কিত ?:
শর্তসাপেক্ষ অপারেটর ?:
একটি অদ্ভুত অপারেটর যার সাথে দু'পক্ষের কৌতুক হয়। এটি 100% এর সমতুল্য তা বিশ্বাস করা একটি সাধারণ ভুল if() { } else {}
। বেশ না।
1 ম এবং 2 য় বা 3 য় অপরেন্ডের মূল্যায়নের মধ্যে একটি সিকোয়েন্স পয়েন্ট রয়েছে। ?:
অপারেটর কেবল ২ য় বা ৩ য় অপরেন্ডকে মূল্যায়ন করার গ্যারান্টিযুক্ত, সুতরাং এটি অপারেন্ডের কোনও পার্শ্ব-প্রতিক্রিয়া কার্যকর করতে পারে না যা মূল্যায়ন করা হয় না। কোড যেমন true? func1() : func2()
কার্যকর হবে না func2()
। এ পর্যন্ত সব ঠিকই.
তবে , একটি বিশেষ নিয়ম জানায় যে 2nd এবং 3rd প্রতীক পরোক্ষভাবে উন্নীত ধরনের পাওয়া হবে এবং সঙ্গে একে অপরের বিরুদ্ধে সামঞ্জস্যপূর্ণ হয় স্বাভাবিক গাণিতিক ধর্মান্তর । ( সি তে অন্তর্ভুক্ত প্রকারের প্রচারের বিধিগুলি এখানে ব্যাখ্যা করা হয়েছে )। এর অর্থ দ্বিতীয় বা তৃতীয় অপারেন্ড সর্বদা কমপক্ষে একটি হিসাবে বৃহত্তর থাকবে int
।
সুতরাং এটা কোন ব্যাপার না যে true
এবং false
ঘটতে ধরনের হতে int
সি কারণ অভিব্যক্তি সবসময় অন্তত একটি আকার দিতে হবে int
কোন ব্যাপার।
এমনকি যদি আপনি এটিতে আবার নতুন করে লিখতে চান তবে এটি একটি আকারটি ফিরিয়ে দেবে !sizeof(a ? (bool)true : (bool)false)
int
এটি সাধারণ গাণিতিক রূপান্তরগুলির মাধ্যমে অন্তর্নিহিত ধরণের প্রচারের কারণে।
sizeof(true)
এবংsizeof(false)
এটিও 4: আদর্শ. geeksforgeeks.org/O5jvuN