সি বা সি ++ প্রোগ্রামিংয়ে কখন আমার একক উদ্ধৃতি এবং ডাবল উদ্ধৃতি ব্যবহার করা উচিত?
সি বা সি ++ প্রোগ্রামিংয়ে কখন আমার একক উদ্ধৃতি এবং ডাবল উদ্ধৃতি ব্যবহার করা উচিত?
উত্তর:
সি এবং সি ++ এ একক উদ্ধৃতিগুলি একটি একক অক্ষর সনাক্ত করে, যখন ডাবল উদ্ধৃতিগুলি একটি স্ট্রিং আক্ষরিক তৈরি করে। 'a'
একটি একক অক্ষর আক্ষরিক, অন্যদিকে একটি নাল টার্মিনেটরযুক্ত "a"
স্ট্রিং আক্ষরিক 'a'
(এটি একটি 2 চর অ্যারে)।
C ++ একটি অক্ষর আক্ষরিক প্রকার char
, কিন্তু সি, একটি অক্ষর আক্ষরিক প্রকার দয়া করে মনে রাখবেন int
, যে হয় sizeof 'a'
, একটি স্থাপত্য যেখানে আছে ints 32bit (এবং CHAR_BIT 8) 4 থাকাকালীন sizeof(char)
সর্বত্র 1।
কিছু সংকলক এছাড়াও একটি এক্সটেনশন বাস্তবায়ন করে, এটি মাল্টি-ক্যারেক্টার ধ্রুবকগুলিকে মঞ্জুরি দেয়। সি 99 স্ট্যান্ডার্ড বলেছেন:
6.4.4.4p10: "একটি পূর্ণসংখ্যার অক্ষরের মান ধ্রুবক একাধিক অক্ষর (উদাহরণস্বরূপ, 'আব') ধারণ করে, বা একটি অক্ষর বা পলায়ন ক্রম ধারণ করে যা একক বাইট প্রয়োগের অক্ষরকে মানচিত্র করে না, বাস্তবায়ন-সংজ্ঞায়িত হয়। "
এটি উদাহরণস্বরূপ:
const uint32_t png_ihdr = 'IHDR';
ফলস্বরূপ ধ্রুবক (এটি জিসিসিতে, এটি প্রয়োগ করে) এর প্রতিটি অক্ষর গ্রহণ করে এবং এটিকে সরিয়ে নিয়ে আপনি যে মানটি পান তা হ'ল যাতে 'আমি' 32-বিট মানটির সর্বাধিক উল্লেখযোগ্য বিটগুলিতে শেষ হয়। স্পষ্টতই, আপনি প্ল্যাটফর্মের স্বতন্ত্র কোডটি লিখলে আপনার উপর নির্ভর করা উচিত নয়।
একক উদ্ধৃতিগুলি অক্ষর ( char
), ডাবল উদ্ধৃতিগুলি নাল-টার্মিনেটেড স্ট্রিং ( char *
) (
char c = 'x';
char *s = "Hello World";
const char *
।
একক উদ্ধৃতি একক অক্ষরের জন্য। ডাবল উদ্ধৃতিগুলি একটি স্ট্রিংয়ের জন্য (অক্ষরের অ্যারে)। আপনি যদি চান তবে একবারে একটি স্ট্রিংয়ের একটি অক্ষর তৈরি করতে একক উদ্ধৃতি ব্যবহার করতে পারেন।
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
আমি প্রায় স্টাফের মতো ঝাঁকুনি দিছিলাম: int cc = 'cc'; এটি ঘটে যা এটি মূলত একটি পূর্ণসংখ্যার বাইট-বুদ্ধিযুক্ত অনুলিপি। সুতরাং এটি দেখার উপায়টি হল যে 'সিসি' যা মূলত 2 গ এর পূর্ণসংখ্যা সিসির 2 বাইট নিচে কপি করা হয়। আপনি যদি একটি ট্রিভিয়া খুঁজছেন, তারপর
printf("%d %d", 'c', 'cc'); would give:
25 25443
এটি কারণ 25443 = 99 + 256 * 99
সুতরাং 'সিসি' একটি বহু-চরিত্র ধ্রুবক এবং না একটি স্ট্রিং।
চিয়ার্স
ডাবল উদ্ধৃতিগুলি স্ট্রিং লিটারেলের জন্য যেমন:
char str[] = "Hello world";
একক উদ্ধৃতি একক অক্ষরের আক্ষরিক জন্য, যেমন:
char c = 'x';
সম্পাদনা করুন ডেভিড যেমন অন্য একটি উত্তরে বলেছিলেন, আক্ষরিক চরিত্রের ধরণটি int
।
char str[] = {'H','e','l','l','o'};
, এবং str
হবে না একটি নাল টারমিনেটর আছে।
str
কোনও স্ট্রিং নয় (কমপক্ষে, কোনও সি-স্টাইলের স্ট্রিং নয়, যা এনটিবিএস হিসাবে সংজ্ঞায়িত হয়েছে)।
char[]
(যা লোকেরা প্রায়শই "স্ট্রিং" হিসাবে পরিচিত) এর সবকিছুই বাতিল-সমাপ্ত হয় না।
"hello" /*seamlessly connected to*/ "world"
। এবং এটি মন্তব্য করা বহু-লাইন বার্তাগুলির জন্য অর্থ তৈরি করতে পারে।
সি-তে সিলেক্ট কোট যেমন 'ক' অক্ষর ধ্রুবক নির্দেশ করে যেখানে "ক" একটি অক্ষরের অ্যারে থাকে, সর্বদা 0 টি অক্ষরের সাথে শেষ হয়
একক উদ্ধৃতি অক্ষর জন্য ব্যবহৃত হয়, ডাবল উদ্ধৃতি স্ট্রিং জন্য ব্যবহৃত হয়।
printf("%c \n",'a');
printf("%s","Hello World");
একটি হ্যালো ওয়ার্ল্ড
যদি আপনি এগুলি বিপরীত ক্ষেত্রে ব্যবহার করেন এবং স্ট্রিংয়ের জন্য একক উদ্ধৃতি এবং চরিত্রের জন্য ডাবল উদ্ধৃতি ব্যবহার করেন used এখানে, এটি ফলাফল হবে;
printf("%c \n","a");
printf("%s",'Hello World');
প্রথম লাইনের জন্য You আপনার আবর্জনা মান বা অপ্রত্যাশিত হবে or অথবা আপনার মতো ফলাফল হতে পারে ..
�
দ্বিতীয় বিবৃতি জন্য যখন। আপনি কিছুই দেখতে পাবেন না। আরও একটি বিষয়। এর পরে যদি আপনার আরও বক্তব্য থাকে। তারা আপনাকে কোনও ফল দেবে না।
দ্রষ্টব্য: পিএইচপি ভাষা আপনাকে একক এবং ডাবল উদ্ধৃতি সহজেই ব্যবহার করতে নমনীয়তা দেয়।
একক উদ্ধৃতিগুলি একটি চরকে চিহ্নিত করছে, একটি স্ট্রিংকে ডাবল বোঝায়।
জাভাতেও এটি একই রকম।