मुझे नीचे 2 कोड स्निपेट से कोई संदेह है।मानों की तुलना करते समय डेटा ओवरफ़्लो
मैंने 64-बिट मशीन (x86_64-linux-gnu) पर यह कोड चलाया। जब डेटा प्रकार unsigned integer
होता है तो मैं मान Val
ओवरफ़्लो देख सकता हूं।
#include<stdio.h>
main()
{
unsigned int Val = 0xFFFFFFFF-15, Val2 = 0xFFFFFFFF;
if (Val+16 < Val2)
{
printf("Val is less than Val2\n");
}
}
डेटा प्रकार है unsigned char
यह अतिप्रवाह नहीं करता है।
- मूल्य उच्च डेटा प्रकार के लिए प्रोत्साहित करने के
Val
करता है जब डेटा प्रकार अहस्ताक्षरित चार है:#include<stdio.h> main() { unsigned char Val = 0xFF-15, Val2 = 0xFF; if (Val+16 < Val2) { printf("Val is less than Val2\n"); } }
मैं दो प्रश्न हैं?
- यदि हां, तो इसे 32-बिट से 64-बिट
unsigned long
तक क्यों प्रचारित नहीं किया गया?
यह 90 का नहीं है - आजकल 'मुख्य' पर एक वापसी प्रकार आवश्यक है। – InternetAussie
अंकगणित करते समय, अगर फिट हो सकता है, तो सब कुछ 'int' को बढ़ावा दिया जा सकता है, या' हस्ताक्षर किए गए int 'के लिए नहीं किया जा सकता है। इन प्रकारों का आकार आपके कंपाइलर के लिए विशिष्ट है और आप इसे आसानी से ढूंढ सकते हैं। –