सी में अनिर्धारित व्यवहार उत्पन्न करने वाले पूर्णांक पर कई संचालन जंग में परिभाषित किए गए हैं। एक आम विषय यह है कि वे डीबग मोड में घबराते हैं और रिलीज मोड में एक परिभाषित गैर-दहशत परिणाम प्राप्त करते हैं। उदाहरण के लिए, डीबग मोड में हस्ताक्षरित पूर्णांक ओवरफ्लो पैनिक्स, लेकिन रिलीज मोड में लपेटें। wrapping_add()
, saturating_add()
आदि जैसे ऑपरेटर वेरिएंट भी परिभाषित किए गए हैंजंग में एक नकारात्मक मूल्य अपरिभाषित व्यवहार छोड़ दिया गया है?
लेकिन ऋणात्मक मूल्य को स्थानांतरित करने के बारे में क्या?
#[test]
fn negative_shift() {
let i = -128i8;
let j = i << 1;
assert_eq!(j, 0);
}
हालांकि यह सफल होता है यह अभी भी व्यवहार अपरिभाषित किया जा सकता है ...