-2147483648 হল 32 বিটের সাহায্যে পূর্ণসংখ্যার ধরণের ছোটতম পূর্ণসংখ্যা, তবে মনে হয় if(...)
বাক্যটিতে এটি উপচে পড়বে :
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
এটি true
আমার পরীক্ষায় মুদ্রণ করবে । তবে, আমরা যদি পূর্ণসংখ্যার জন্য -2147483648 কাস্ট করি তবে ফলাফলটি ভিন্ন হবে:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
এটি মুদ্রণ করবে false
।
আমি বিভ্রান্ত কেউ কি এই সম্পর্কে একটি ব্যাখ্যা দিতে পারেন?
02-05-2012 আপডেট করুন:
আপনার মন্তব্যের জন্য ধন্যবাদ, আমার সংকলকটিতে, int এর আকার 4 বাইট। আমি কিছু সাধারণ পরীক্ষার জন্য ভিসি ব্যবহার করছি। আমি আমার প্রশ্নের বিবরণ পরিবর্তন করেছি।
এটি এই পোস্টে খুব ভাল উত্তর পেয়েছে , আন্ড্রেটি সংকলকটি এই ধরনের ইনপুটটিতে কীভাবে আচরণ করবে এবং এই ন্যূনতম পূর্ণসংখ্যাটি কীভাবে কার্যকর হয়েছিল সে সম্পর্কে একটি খুব বিশদ ব্যাখ্যা দিয়েছিল। অন্যদিকে qPCR4vir কিছু সম্পর্কিত "কৌতূহল" এবং কিভাবে পূর্ণসংখ্যার প্রতিনিধিত্ব করে। খুবই মুগ্ধকর!
INT_MIN
এর -9223372036854775808
, যদিCHAR_BIT
16 এমনকি সাথে আছেন CHAR_BIT == 8
এবং sizeof(int
== 4) `আপনি পেতে পারেন -9223372036854775807
কারণ সি 2-পরিপূর্ণ সংখ্যা প্রয়োজন হয় না।