((int) a) और (int(a)) में क्या अंतर है?

क्या दूसरी अभिव्यक्ति शुद्ध "С" में मान्य है?

7
NoSkill 19 जिंदा 2020, 12:44
यहां देखें: en.cppreference.com/w/cpp/language/explicit_cast
 – 
Bas in het Veld
19 जिंदा 2020, 12:48
 – 
Evg
19 जिंदा 2020, 12:49
2
"शुद्ध सी" में कुछ मान्य है या नहीं, यह जांचते समय एक अच्छी शुरुआत -std=c11 -pedantic-errors (या आपके कंपाइलर के समकक्ष) के साथ संकलित करना है। यह आपको 99% बार सही उत्तर देगा।
 – 
StoryTeller - Unslander Monica
19 जिंदा 2020, 12:50
4
- मेरे सिर के ऊपर से नहीं। लेकिन कंपाइलर्स में अभी भी कई बार अनुरूपता बग होती है, इसलिए मेरा 1% त्रुटि मार्जिन।
 – 
StoryTeller - Unslander Monica
19 जिंदा 2020, 12:52
1
"शुद्ध सी" से आपका मतलब "सी" है?
 – 
M.M
19 जिंदा 2020, 13:15

2 जवाब

सबसे बढ़िया उत्तर

(type_name)identifier (या अधिक विशेष रूप से (type_name)cast_expression ( 6.5.4)) एक सी-स्टाइल कास्ट है। (int(a)), C में वाक्यात्मक रूप से अमान्य है, जब तक कि a एक प्रकार न हो। फिर यह एक प्रकार का a प्रकार लेने और int लौटने वाले फ़ंक्शन के लिए एक कलाकार का हिस्सा हो सकता है, जो एक वाक्य रचनात्मक रूप से मान्य लेकिन अर्थपूर्ण रूप से अमान्य कास्ट होगा, इसलिए बेकार भी। सी में int(a); int a; के बराबर एक घोषणा होगी।

C++ कास्ट के लिए int(a) सिंटैक्स का समर्थन करता है (प्रकार का नाम एक ही शब्द होना चाहिए; यह उदाहरण के साथ काम नहीं करता है, unsigned long(a)) इस आधार पर कि int (प्रकार का नाम) फिर एक पैरामीट्रिज्ड कंस्ट्रक्टर के साथ एक प्रकार की तरह बन जाता है (हालाँकि यह सी ++ में भी है, सी-स्टाइल कास्ट के साथ समूहीकृत है, जो कास्टिंग के एक प्रकार के बहिष्कृत तरीके के रूप में है, और अधिक बारीक/दृश्यमान static_cast/reinterpret_cast/const_cast कास्ट हैं पसंदीदा)।

सी ++ सिंटैक्स तब काफी दिलचस्प प्रतीत होता है क्योंकि यह काम करता है (सी ++):

typedef int type_name;
type_name (a); //a declaration
a=0;
printf("%d\n", type_name(a)); //type_name(a) is a cast expr here
3
PSkocik 19 जिंदा 2020, 19:08
2
Int(a) कंस्ट्रक्टर के लिए पैरामीटर के रूप में एक अनाम int ऑब्जेक्ट नहीं होगा, ठीक उसी तरह string("abc") एक अनाम स्ट्रिंग है जिसे char* "abc" तर्क के साथ बनाया गया है)?
 – 
Christophe
19 जिंदा 2020, 18:24
हाँ, यह समग्र रूप से थोड़ा अधिक समझ में आता है।
 – 
PSkocik
19 जिंदा 2020, 19:09

सी ++ में उनके बीच कोई अंतर नहीं है। हालाँकि, C केवल पहले कास्ट ऑपरेशन का समर्थन करता है।

इस उदाहरण को ट्यूटोरियल से देखें:

double x = 10.3;
int y;
y = (int) x;    // c-like cast notation 
y = int (x);    // functional notation
7
alk 19 जिंदा 2020, 13:13