আমার একটি আছে int a
যা "অনন্ত" এর সমান হওয়া দরকার। এর অর্থ হল যে যদি
int b = anyValue;
a>b
সর্বদা সত্য।
সি ++ এর কোনও বৈশিষ্ট্য যা এটি সম্ভব করে দিতে পারে?
Max Value
ভাষার প্রয়োগের জন্য check
a>b
চেক :)
আমার একটি আছে int a
যা "অনন্ত" এর সমান হওয়া দরকার। এর অর্থ হল যে যদি
int b = anyValue;
a>b
সর্বদা সত্য।
সি ++ এর কোনও বৈশিষ্ট্য যা এটি সম্ভব করে দিতে পারে?
Max Value
ভাষার প্রয়োগের জন্য check
a>b
চেক :)
উত্তর:
পূর্ণসংখ্যা সহজাতভাবে সীমাবদ্ধ। নিকটস্থ আপনি পেতে পারেন সেট করে হয় a
থেকে int
এর সর্বোচ্চ মান:
#include <limits>
// ...
int a = std::numeric_limits<int>::max();
আপনার প্রয়োগে 32 বিট প্রশস্ত হলে কোনটি 2^31 - 1
(বা 2 147 483 647
) হবে int
।
আপনি যদি সত্যিই অনন্ত প্রয়োজন, একটি ফ্লোটিং পয়েন্ট সংখ্যা টাইপ ব্যবহার মত float
বা double
। তারপরে আপনি এতে অনন্ততা পেতে পারেন:
double a = std::numeric_limits<double>::infinity();
int
সমাধানটি ব্যবহার করেন তবে আপনাকে অবশ্যই গাণিতিক সম্পর্কে খুব সতর্কতা অবলম্বন করা উচিত: "অনন্ত" -এ একটি ধনাত্মক সংখ্যা যুক্ত করা খুব অপ্রত্যাশিত ফলাফল এনে দেবে।
পূর্ণসংখ্যা সীমাবদ্ধ, তাই দুঃখের বিষয় আপনি এটিকে সত্যিকারের অনন্তরে সেট করতে পারেন না। তবে আপনি এটিকে কোনও int এর সর্বাধিক মানতে সেট করতে পারেন, এর অর্থ এই যে এটি অন্য কোনও সংখ্যার চেয়ে বৃহত্তর বা সমান হবে, অর্থাত:
a>=b
সর্বদা সত্য।
আপনি এই দ্বারা এটি করতে হবে
#include <limits>
//your code here
int a = std::numeric_limits<int>::max();
//go off and lead a happy and productive life
এটি সাধারণত 2,147,483,647 এর সমান হবে
আপনার যদি সত্যই সত্য "অসীম" মান দরকার হয়, আপনাকে একটি ডাবল বা একটি ফ্লোট ব্যবহার করতে হবে। তারপরে আপনি কেবল এটি করতে পারেন
float a = std::numeric_limits<float>::infinity();
সংখ্যার সীমা সম্পর্কিত অতিরিক্ত ব্যাখ্যা এখানে পাওয়া যাবে
শুভ কোডিং!
দ্রষ্টব্য: ডব্লিউটিপি যেমন উল্লেখ করেছে, "ইনফিনেট" এমন একটি অন্তর্ভুক্ত থাকা যদি একেবারে প্রয়োজন হয় তবে আপনাকে কোনও ইনট জন্য একটি র্যাপার ক্লাস লিখতে হবে এবং তুলনা অপারেটরদের ওভারলোড করতে হবে, যদিও এটি বেশিরভাগ প্রকল্পের জন্য সম্ভবত প্রয়োজনীয় নয়।
max()
বা infinity()
আপনি ব্যবহার করতে হবে যেখানে সাংখ্যিক টাইপটি অজানা একটি টেমপ্লেটে +/-infinity()
iff std::numeric_limits<T>::has_infinity
এবং অন্যথায় min()
এবংmax()
int
অন্তর্নিহিত সসীম হয়; আপনার প্রয়োজনীয়তা পূরণ করে যে কোন মান আছে।
আপনি যদি এর ধরণ পরিবর্তন করতে ইচ্ছুক হন b
তবে আপনি অপারেটরের ওভাররাইড দিয়ে এটি করতে পারেন:
class infinitytype {};
template<typename T>
bool operator>(const T &, const infinitytype &) {
return false;
}
template<typename T>
bool operator<(const T &, const infinitytype &) {
return true;
}
bool operator<(const infinitytype &, const infinitytype &) {
return false;
}
bool operator>(const infinitytype &, const infinitytype &) {
return false;
}
// add operator==, operator!=, operator>=, operator<=...
int main() {
std::cout << ( INT_MAX < infinitytype() ); // true
}
std::numeric_limits<float>::infinity()
।
ভবিষ্যতে এটি আমার জন্য একটি বার্তা:
শুধু ব্যবহার করুন: (unsigned)!((int)0)
এটি 1 ম (সমস্ত) কে সমস্ত বিট বরাদ্দ করে কোনও মেশিনে সর্বাধিক সম্ভাব্য সংখ্যা তৈরি করে এবং পরে এটি স্বাক্ষরবিহীন অবস্থায় কাস্ট করে
আর ভালো
#define INF (unsigned)!((int)0)
এবং তারপরে আপনার কোডটিতে কেবল আইএনএফ ব্যবহার করুন
#define INF ((unsigned) ~0)
দেখতে এখানে ।
আপনি INT_MAX ব্যবহার করতে পারেন:
http://www.cplusplus.com/reference/climits/
এটি সংখ্যাযুক্ত_লিট ব্যবহার করার সমতুল্য।
কমপক্ষে মিনিট এবং সর্বাধিক মান
আন্ত -2,147,483,648 / 2,147,483,647 আন্ত 64 -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807
আমার ধারণা আপনি 9,223,372,036,854,775,807 এর সমান হতে পারে তবে এটি একটি 64 এর দরকার হবে
আপনি যদি সর্বদা খাঁটি হতে চান তবে খ কেন এটি পরীক্ষা করা দরকার? এটি সর্বদা সত্য হতে সেট করুন
cstdint
)।
int
সি ও সংশ্লিষ্ট ধরনের ++,।
float
এস ব্যবহার করতে পারেন , যার একটি মূল্য রয়েছে যা অনন্তকে উপস্থাপন করে।