(int)x C-स्टाइल टाइपकास्टिंग है जहां static_cast<int>(x) C++ में उपयोग किया जाता है। यह static_cast<>() कंपाइल-टाइम चेकिंग सुविधा देता है, लेकिन C-स्टाइल कास्टिंग इसका समर्थन नहीं करती। यह static_cast<>() C++ कोड में कहीं भी देखा जा सकता है। और इस C++ कास्ट का उपयोग करके इरादे बहुत बेहतर तरीके से व्यक्त किए जाते हैं।
C-स्टाइल कास्ट में कभी-कभी हम किसी टाइप पॉइंटर को किसी अन्य टाइप के डेटा पर इंगित करने के लिए कास्ट कर सकते हैं। जैसे एक इंटीजर पॉइंटर कैरेक्टर टाइप डेटा पर भी इंगित कर सकता है, क्योंकि वे काफी समान हैं, केवल अंतर यह है कि कैरेक्टर 1-बाइट का है, इंटीजर 4-बाइट्स का है। C++ में static_cast<>() C-स्टाइल कास्टिंग से अधिक सख्त है। यह केवल संगत प्रकारों के बीच रूपांतरण करता है।
उदाहरण कोड
char c = 65; //1-बाइट डेटा। 'A' का ASCII
int *ptr = (int*)&c; //4-बाइट
चूंकि 4-बाइट पॉइंटर में, यह 1-बाइट आवंटित मेमोरी की ओर इशारा कर रहा है, यह रनटाइम त्रुटि उत्पन्न कर सकता है या कुछ आसन्न मेमोरी को ओवरराइट कर सकता है।
C++ में static_cast<>() कंपाइलर को यह जांचने की अनुमति देगा कि पॉइंटर और डेटा समान प्रकार के हैं या नहीं। यदि नहीं तो यह संकलन के दौरान गलत पॉइंटर असाइनमेंट अपवाद उठाएगा।
char c = 65; //1-बाइट डेटा। 'A' का ASCII
int *ptr = static_cast<int>(&c);
यह कंपाइल-टाइम त्रुटि उत्पन्न करेगा।