কেন একটি ছোট টাইপের পরিবর্তে string::compareএকটি intপরিবর্তিত হয় shortবা char? আমার বোধগম্যতা হল এই পদ্ধতিটি কেবল -1, 0 বা 1 প্রদান করে।
দ্বিতীয় অংশ, যদি আমি একটি তুলনামূলক পদ্ধতিটি ডিজাইন করতে পারি যা টাইপের দুটি বস্তুর তুলনা করে Fooএবং আমি কেবল -1, 0 বা 1 ফিরে আসতে চাইতাম তবে ব্যবহার করা shortবা charসাধারণত একটি ভাল ধারণা হতে পারে?
সম্পাদনা: আমাকে সংশোধন করা হয়েছে, string::compare-1, 0, বা 1 ফিরে আসে না, এটি আসলে একটি মান> 0, <0 বা 0 প্রদান করে। আমাকে লাইনে রাখার জন্য ধন্যবাদ।
উত্তরটি মোটামুটি বলে মনে হচ্ছে, এর চেয়ে ছোট কোনও প্রকারের ফিরে আসার কোনও কারণ নেই intকারণ রিটার্ন মানগুলি "মূল্যায়ন" এবং সেই "মূল্যবোধগুলি" টাইপ ইন্ট (4 বাইট) এর চেয়ে ছোট হওয়ার কারণে কোনও উপকার পায় না। এছাড়াও, অনেক লোক উল্লেখ করেছিলেন যে বেশিরভাগ সিস্টেমে রেজিস্টারগুলি সম্ভবত intযাইহোক আকারের হতে চলেছে , যেহেতু এই রেজিস্টারগুলি আপনি একটি 1, 2 বা 4 বাইট মান দিচ্ছেন কিনা তা পূরণ করা হচ্ছে, কোনও ফেরত দেওয়ার কোনও আসল সুবিধা নেই ছোট মান।
সম্পাদনা 2: প্রকৃতপক্ষে দেখে মনে হচ্ছে অ্যালাইনমেন্ট, মাস্কিং ইত্যাদির মতো ছোট ডেটাটাইপগুলি ব্যবহার করার সময় অতিরিক্ত প্রসেসিং ওভারহেড হতে পারে একটি অ্যারের ক্ষেত্রে।
আজ কিছু শিখেছি, আবারো ধন্যবাদ!
string::compare()আপনার লিঙ্ক করা ডকুমেন্টেশনে পরিষ্কারভাবে বলা হয়েছে যে রিটার্নের মান হ'ল <0, 0, এবং> 0-
shortবা এর charপরিবর্তে কি সুবিধা হবে int? বেশিরভাগ আর্কিটেকচার কোনও ফাংশনের রিটার্ন ভ্যালু একটি রেজিস্টারে সংরক্ষণ করতে চলেছে এবং একটি intকোনও রেজিস্টারে পাশাপাশি একটি shortবা একটি হিসাবে ফিট করে char। এবং charসংখ্যার জন্য ব্যবহার করা সর্বদা একটি খারাপ ধারণা, বিশেষত যখন আপনাকে স্বাক্ষরিত মানগুলি সঠিকভাবে পরিচালিত হয় তার গ্যারান্টি দেওয়া দরকার।
charকরা একটি খারাপ ধারণা হতে পারে, যেহেতু charস্বাক্ষরিত নয় এমন প্ল্যাটফর্মগুলিতে শূন্যের চেয়ে কম হলে যদি রিটার্ন মানটির কোড চেক করা ব্যর্থ হয় ।