1024 * 1024 * 1024 * 1024
এবং 2147483648
জাভাতে একই মান নেই।
প্রকৃতপক্ষে, জাভাতে 2147483648
ভ্যালু (যদিও 2147483648L
তা) নেই। সংকলক আক্ষরিকভাবে এটি কী তা বা কীভাবে এটি ব্যবহার করতে পারে তা জানে না। সুতরাং এটি whines।
1024
জাভা একটি বৈধ int- এ, এবং একটি বৈধ int
অন্য বৈধ দ্বারা গুন int
, সবসময় একটি বৈধ int
। এমনকি যদি এটি একই মান না হয় যা আপনি স্বজ্ঞাতভাবে আশা করবেন কারণ গণনাটি উপচে পড়বে।
উদাহরণ
নিম্নলিখিত কোড নমুনা বিবেচনা করুন:
public static void main(String[] args) {
int a = 1024;
int b = a * a * a * a;
}
আপনি কি এটি একটি সংকলন ত্রুটি উত্পন্ন আশা করতে পারেন? এটি এখন খানিকটা পিচ্ছিল হয়ে যায়।
যদি আমরা 3 টি পুনরাবৃত্তি সহ একটি লুপ রাখি এবং লুপটিতে গুণিত করি?
সংকলকটিকে অপ্টিমাইজ করার অনুমতি দেওয়া হয়েছে তবে প্রোগ্রামটি করার সময় এটি আচরণের পরিবর্তন করতে পারে না।
এই কেসটি আসলে কীভাবে পরিচালিত হয় সে সম্পর্কে কিছু তথ্য:
জাভা এবং অন্যান্য অনেক ভাষায়, পূর্ণসংখ্যার মধ্যে একটি নির্দিষ্ট সংখ্যক বিট থাকে। প্রদত্ত সংখ্যা বিটগুলিতে ফিট না করা গণনাগুলি উপচে পড়বে ; গণনাটি মূলত জাভাতে মডুলাস 2 ^ 32 সম্পাদিত হয় যার পরে মানটি একটি স্বাক্ষরিত পূর্ণসংখ্যায় রূপান্তরিত হয়।
অন্যান্য ভাষা বা এপিআই-এর বিটগুলির একটি গতিশীল সংখ্যার ব্যবহার ( BigInteger
জাভাতে), একটি ব্যতিক্রম বাড়িয়ে তোলে বা যাদু মানকে যেমন একটি নম্বর নয় এমন মান সেট করে।