দুটি 32-বিট পূর্ণসংখ্যা যোগ করার ফলে পূর্ণসংখ্যার ওভারফ্লো হতে পারে:
uint64_t u64_z = u32_x + u32_y;
32-বিট পূর্ণসংখ্যার মধ্যে কোনও একটি আগে কাস্ট করা বা 64-বিট পূর্ণসংখ্যায় যুক্ত করা গেলে এই ওভারফ্লো এড়ানো যায়।
uint64_t u64_z = u32_x + u64_a + u32_y;
তবে, যদি সংকলক সংযোজনটিকে পুনরায় অর্ডার করার সিদ্ধান্ত নেয়:
uint64_t u64_z = u32_x + u32_y + u64_a;
পূর্ণসংখ্যা ওভারফ্লো এখনও ঘটতে পারে।
সংকলকগণ কি এ জাতীয় পুনঃক্রম করার অনুমতি দেয় বা আমরা ফলাফলের অসঙ্গতি লক্ষ্য করতে এবং অভিব্যক্তি আদেশটি যেমন রাখি তেমন তাদের বিশ্বাস করতে পারি?
((uint32_t)-1 + (uint32_t)1) + (uint64_t)0
ফলস্বরূপ রয়েছে 0
, যেখানে (uint32_t)-1 + ((uint32_t)1 + (uint64_t)0)
ফলাফল রয়েছে 0x100000000
এবং এই দুটি মান সমান নয়। সুতরাং এটি উল্লেখযোগ্য যে সংকলক সেই রূপান্তরটি প্রয়োগ করতে পারে কি না। তবে হ্যাঁ, মানকটি স্বাক্ষরিত পূর্ণসংখ্যার জন্য কেবল "ওভারফ্লো" শব্দটি ব্যবহার করে, স্বাক্ষরবিহীন নয়।
uint32_t
মান হিসাবে উপস্থিত হয় - যা উপচে পড়ে না, তারা মোড়কে দেয়। এগুলি ভিন্ন আচরণ নয়।