"দীর্ঘ দীর্ঘ" = "দীর্ঘ দীর্ঘ অন্তর্" = "দীর্ঘ অন্ত দীর্ঘ" = "ইন দীর্ঘ দীর্ঘ"?


153

আমি উভয়ই খুঁজে পেয়েছি long int longএবং int long longএকটি পরিবর্তনশীল ধরণের জন্য সংকলন করতে পারি। সেখানে কোন পার্থক্য আছে কী long int long, int long long, long longএবং long long int?

সাধারণভাবে, টাইপটি কি একইরকম হয় long?

1 দীর্ঘ:

long l;
int long il;
long int li;

2 দীর্ঘ:

long long ll;
int long long ill;
long int long lil;
long long int lli;

এছাড়াও উপরেরটি সঠিক হলে, নিম্নলিখিত ঘোষণাগুলিও কি অভিন্ন?

long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;

8
এটি পরীক্ষা করে নিন (কেবলমাত্র আপনার সংকলকটিতে) std::swap। প্রকারগুলি অভিন্ন না হলে এটি সংকলন করবে না।
বাথশেবা

1
সংশ্লিষ্ট: stackoverflow.com/questions/589575/...
TobiMcNamobi

24
পুনরায় খুলতে ভোট দিয়েছেন। কথিত সদৃশটি সম্পর্কিত তবে এটি এই প্রশ্ন নয়। সেখানে উত্তর এই প্রশ্নের উত্তর দেয় না। নিকট-ভোটারগণ: অজ্ঞতার ভিত্তিতে বন্ধ করার জন্য দয়া করে ভোট দিন না।
চিয়ার্স এবং এইচটিএইচ - আলফ


নিশ্চিত হওয়ার জন্য প্রত্যেকের আকারের () এর সাথে তুলনা করুন। একটি দীর্ঘ দীর্ঘ bits৪ বিট হওয়া উচিত তাই আকারের (এল) ৮ টি হওয়া উচিত, যদি আকার (অসুস্থ) == সাইজফ (লিল) হয় তবে আপনার সংকলক সেগুলি একই দেখতে পাবে। এটি আপনার বর্তমান সংকলক এবং ভবিষ্যতের যে কোনও কম্পাইলারের মুখোমুখি হতে পারে (আকারের মৃত্যুর আগ পর্যন্ত) - যা আশা করি কখনই হবে না বা আমার কাছে পুনরায় লেখার গুরুতর পরিমাণ রয়েছে।
মাইকেল সিসটেমসন

উত্তর:


136

সি ++ স্ট্যান্ডার্ড অনুযায়ী (7.1.6.2 সাধারণ ধরণের স্পেসিফায়ার)

3 যখন একাধিক সিম্পল-টাইপ-স্পেসিফায়ারগুলিকে অনুমতি দেওয়া হয় তখন এগুলি যে কোনও ক্রমে অন্য ডেস্ক-স্পেসিফায়ারগুলির সাথে অবাধে সংমিশ্রিত হতে পারে।

সুতরাং উদাহরণস্বরূপ নিম্নলিখিত ঘোষণা বৈধ

long static long const int x = 10;

আপনি কোয়ালিফায়ারের constexprসাথে সুনির্দিষ্ট ব্যবহার করতে পারেন const। উদাহরণ স্বরূপ

constexpr long static long const int x = 10;

যাইহোক, আমরা স্পেসিফায়ার সম্পর্কে ভুলে গেছি signed! আসুন এটির জন্য উদাহরণস্বরূপ উদাহরণস্বরূপx

constexpr long static long const int signed x = 10;

সিতে আপনি একই ঘোষিত স্পেসিফায়ার সিকোয়েন্সে বেশ কয়েকটি ধরণের কোয়ালিফায়ার ব্যবহার করতে পারেন। সি স্ট্যান্ডার্ড অনুযায়ী (6.7.3 টাইপ কোয়ালিফায়ার)

5 যদি একই কোয়ালিফায়ার একই স্পেসিফায়ার-বাছাইকারী তালিকায় একাধিকবার উপস্থিত হয়, প্রত্যক্ষভাবে বা এক বা একাধিক টাইপডেফের মাধ্যমে, আচরণটি একই রকম হয় যেমন এটি একবারে উপস্থিত হয়েছিল ...

সি হিসাবে উদাহরণস্বরূপ নিম্নলিখিত ঘোষণাটিও বৈধ

const long const long static const int const signed x = 10;

সুতরাং যদি আপনাকে প্রোগ্রামে টাইপ করা প্রতীকগুলির সংখ্যা অনুসারে অর্থ প্রদান করা হয় তবে আমি আপনাকে এই জাতীয় ঘোষণা ব্যবহার করার পরামর্শ দিচ্ছি। :)


96
আপনি যখন একেবারে, ইতিবাচকভাবে নিশ্চিত হতে হবে যে মানটি কখনই পরিবর্তিত হবে না।
বব

3
@hvd দুর্ভাগ্যক্রমে মন্তব্যগুলি সাধারণত এমন গণনা থেকে বাদ থাকে।
মস্কো

9
এমনকি যদি এর মতো লেখা হয় #define REM(...), এবং তারপরে একটি বিশাল শব্দ গণনার উদাহরণের জন্য , i++; REM(Here, we increment i to make sure the new value of i is one more than the old value of i. This is safe because we know the value of i is less than the maximum value of i's type.)?


15
আপনাকে const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const answer = 42;
বাছাইপর্বের

111

টাইপটি কি অভিন্ন ...

হ্যাঁ.

সি ++ 11 §7.1.6.2 / 3

যখন একাধিক সিম্পল-টাইপ-স্পেসিফায়ার গুলি অনুমোদিত হয়, তখন তারা যে কোনও ক্রমে অন্য ডেস-স্পেসিফায়ারগুলির সাথে নিখরচায় মিলে যায়


2
স্ট্রেট শ্যুটার +1 টি।
einpoklum

42

হ্যাঁ, তবে দয়া করে করবেন না । ইংরেজি এবং জার্মানের যেমন বিশেষণ এবং ক্রিয়াবিধিগুলির জন্য প্রচলিত শব্দ অর্ডার রয়েছে (যেমন সময় - পদ্ধতি - স্থান), তেমনি সি এবং সি ++ হয়। প্রচলিত আদেশ থেকে পৃথক হওয়া সংকলককে বিভ্রান্ত করবে না, তবে এটি আপনার সহযোগী বিকাশকারীকে বিভ্রান্ত করবে। আমি প্রস্তাব দেব যে প্রচলিত আদেশ প্রায় লাইন বরাবর হয়

  1. static/ extern(সংযোগ)
  2. const/ volatile(পরিবর্তন)
  3. signed/ unsigned(স্বাক্ষর)
  4. short/ long(দৈর্ঘ্য)
  5. প্রাথমিক ধরণ (মাথা বিশেষ্য)

যদিও অবশ্যই কিছু উইগল রুম আছে।


29

"দীর্ঘ দীর্ঘ" = "দীর্ঘ দীর্ঘ অন্তর্" = "দীর্ঘ অন্ত দীর্ঘ" = "ইন দীর্ঘ দীর্ঘ"?

এখানে অন্যান্য সমস্ত উত্তর আপনার প্রশ্নের দ্বিতীয় অংশ সম্পর্কে কথা বলেছে। প্রথম অংশের জন্য: "দীর্ঘ দীর্ঘ" = "দীর্ঘ দীর্ঘ অন্তর্নির্মিত"? , উত্তর হ্যাঁ

সি ++ ১১ 7.1.6.2 সাধারণ ধরণের স্পেসিফায়ার (টেবিল 10)

Specifier(s)            Type
...                     ...
long long int           long long int
long long               long long int
long int                long int
long                    long int  
...                     ...  

আপনার প্রশ্নের দ্বিতীয় অংশের জন্য: "দীর্ঘ দীর্ঘ দীর্ঘ" = "ইন দীর্ঘ দীর্ঘ"? , উত্তর হ্যাঁ আবার।

টাইপ-স্পেসিফায়ারগুলি যে কোনও ক্রমে সংঘটিত হতে পারে এবং অন্যান্য ঘোষণার স্পেসিফায়ারগুলির সাথে মিলে যায়। অতএব, নিম্নলিখিত সমস্ত

long long  
long long int  
long int long  
int long long  

বৈধ এবং সমতুল্য


3
আপনি @ চিয়ার্স এবং এইচটিএইচ কেন উন্নতি করবেন না তা আমি পাচ্ছি না। - পরিবর্তে আলফ উত্তর।
সেবাস্তিয়ান মাচ

8
@phresnel; কারণ অন্যান্য সমস্ত উত্তর কেবল অর্ধেকটি কভার করে। শিরোনামে প্রশ্নের প্রথমার্ধটি অনুভূত ফর্ম্যাট স্পেসিফায়ারের অন্তর্নিহিত সম্পর্কে সমস্ত সম্বোধন করা হয়েছে: "দীর্ঘ দীর্ঘ" = "দীর্ঘ দীর্ঘ অন্তর্" = "দীর্ঘ অন্ত দীর্ঘ" = "ইন দীর্ঘ দীর্ঘ"?
হ্যাক

5
@ ফ্রেসনেল কিছু লোক খ্যাতি অর্জনের উত্সাহের জন্য উত্তর দেয়। অন্য অর্ধেক উত্তর কভার কারও কারও উত্তর সম্পাদনা করা কার্যকরভাবে অন্য কাউকে creditণ দেওয়ার জন্য অনেক কাজ।

1
সত্য। প্রথমে এটি একটি সামান্য সংযোজন হিসাবে হাজির। (সিসি: @ দ্য ব্লুফিশ)
সেবাস্তিয়ান মাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.