আমি একটি সাধারণ প্রোগ্রাম নীচে আছে:
#include <stdio.h>
#define INT32_MIN (-0x80000000)
int main(void)
{
long long bal = 0;
if(bal < INT32_MIN )
{
printf("Failed!!!");
}
else
{
printf("Success!!!");
}
return 0;
}
শর্তটি if(bal < INT32_MIN )
সর্বদা সত্য। কিভাবে এটা সম্ভব?
যদি আমি ম্যাক্রোটিতে পরিবর্তন করি তবে এটি ঠিকঠাক কাজ করে:
#define INT32_MIN (-2147483648L)
কেউ কি বিষয়টি চিহ্নিত করতে পারেন?
-0x80000000
, কিন্তু জন্য মিথ্যা -0x80000000L
,-2147483648
এবং -2147483648L
কেন int- এ আক্ষরিক হল: (জিসিসি 4.1.2), তাই প্রশ্ন হল -0x80000000
int- এ আক্ষরিক থেকে আলাদা -2147483648
?
<limits.h>
সংজ্ঞায়িত INT_MIN
হিসাবে (-2147483647 - 1)
, এখন কেন জানো।
CHAR_BIT * sizeof(int)
?