স্বাক্ষরবিহীন ডেটাটাইপ কী?


90

আমি এই unsigned"টাইপলেস" টাইপটি কয়েকবার ব্যবহৃত দেখেছি, তবে এর ব্যাখ্যা কখনও দেখিনি। আমি মনে করি এটি সম্পর্কিত কোনও signedপ্রকার আছে। এখানে একটি উদাহরণ:

static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
    next = next * 1103515245 + 12345;
    return((unsigned)(next/65536) % 32768);
}
void mysrand(unsigned seed) {
    next = seed;
}

আমি এ পর্যন্ত যা জড়ো করেছি:
- আমার সিস্টেমে sizeof(unsigned) = 4(32-বিট স্বাক্ষরবিহীন প্রান্তের ইঙ্গিত)
- এটি স্বাক্ষরবিহীন সংস্করণে অন্য ধরণের কাস্টিংয়ের জন্য শর্টহ্যান্ড হিসাবে ব্যবহৃত হতে পারে:

signed long int i = -42;
printf("%u\n", (unsigned)i);

এটি কি এএনএসআই সি, বা কেবল একটি সংকলক এক্সটেনশান?

উত্তর:



30

unsignedমানে unsigned intsignedমানে signed int। জাস্ট ব্যবহার করা সি-এ unsignedঘোষণা করার একটি অলস উপায় unsigned intYes হ্যাঁ এটি এএনএসআই।


14

Inতিহাসিকভাবে সিতে, আপনি যদি একটি ডেটা টাইপ বাদ দেন তবে "ইনট" ধরে নেওয়া হয়েছিল। সুতরাং "স্বাক্ষরবিহীন" হ'ল "স্বাক্ষরবিহীন অন্তর্" এর জন্য একটি শর্টহ্যান্ড। এটি দীর্ঘদিন ধরে খারাপ অনুশীলন হিসাবে বিবেচিত হয়, তবে এখনও এটি ব্যবহার করার জন্য যথেষ্ট পরিমাণ কোড রয়েছে।


6
আমি জানতাম না যে এটি খারাপ অভ্যাস। এর কি যুক্তি আছে? longপরিবর্তে long intখুব সাধারণ তাই আমি কেন নিশ্চিত যে unsignedতার পরিবর্তে unsigned intগ্রহণযোগ্য হবে না।
সিবি বেইলি

10
@ চার্লস বেইলি: এই দিনগুলিতে - কমপক্ষে যদি আপনি আনুষ্ঠানিক না হয়ে প্র্যাকটিমেটিক হয়ে থাকেন - লম্বা, ইনট, সংক্ষিপ্ত এবং চরটি বিভিন্ন ডেটা ধরণের হিসাবে বিবেচিত হয় কারণ তারা স্বাক্ষরযুক্ত (এবং ডিফল্ট, স্বাক্ষরিত) হয়ে থাকে কোয়ালিফায়ার সুতরাং আপনি "স্বাক্ষরবিহীন দীর্ঘ" বা "স্বাক্ষরবিহীন চর" ব্যবহার করার একই পদ্ধতিতে "স্বাক্ষরবিহীন ইনট" ব্যবহার করার প্রবণতা রাখবেন (এবং এটি স্পষ্ট করে দেয় যে আপনি কেবলমাত্র ইন্টারটি মিস করেন নি)। "লং ইন্ট" বা "শর্ট ইনট" এর অন্তর্নিহিত অতিমাত্রায়।
ডিপস্টিক

4
@ ডিপস্টিক, "লং" "ইনট" এর জন্য যোগ্যতা অর্জনকারী। "স্বাক্ষরবিহীন অন্তর্নিহিত" তে অন্তর্নিহিত যেমন "স্বাক্ষরযুক্ত স্বাক্ষরিত দীর্ঘ"
কনরাড মায়ার

4
এটি অন্তর্নিহিত "ইনট" নিয়মের মতো নয়। এই উত্তরটি বিভ্রান্তিকর।

7

ইন সি, এর unsignedজন্য একটি শর্টকাট unsigned int

আপনার কাছে longএটির জন্য একটি শর্টকাট havelong int

এবং এটি ঘোষণা করাও সম্ভব unsigned long(এটি হবে একটি unsigned long int)।

এটি এএনএসআই স্ট্যান্ডার্ডে রয়েছে


হ্যাঁ. unsignedহিসাবে একই unsigned intতবে আমি WG14 / N1124 কমিটি খসড়াতে অনুসন্ধান করেছি - 6 ই মে, 2005 আইএসও / আইসি 98999: টিসি 2 এর জন্য unsignedএবং কোথায় সংজ্ঞায়িত হয়েছে তা খুঁজে পেল না ... আপনি যে অংশটি সংজ্ঞায়িত করেছেন সেটিকে উদ্ধৃত করতে পারবেন?
ব্যবহারকারী 454322

5

সি এবং সি ++ এ

unsigned = unsigned int (Integer type)
signed   = signed int (Integer type)

এন বিট সমেত একটি স্বাক্ষরবিহীন পূর্ণসংখ্যার মান 0 এবং (2 ^ n-1) এর মধ্যে থাকতে পারে যা 2 ^ n বিভিন্ন মান values

একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা হয় ধনাত্মক বা শূন্য।

স্বাক্ষরযুক্ত পূর্ণসংখ্যা 2 এর পরিপূরক ব্যবহার করে একটি কম্পিউটারে সঞ্চয় করা হয়।


2

সি 17 অনুসারে 6.7.2 §2:

টাইপ স্পেসিফায়ারগুলির প্রতিটি তালিকা নিম্নলিখিত মাল্টিসেটগুলির মধ্যে একটি হতে হবে (কমা দ্বারা বিস্মৃত, যখন প্রতি আইটেমে একাধিক মাল্টিসেট থাকে); প্রকারের স্পেসিফায়ারগুলি যে কোনও ক্রমে সংঘটিত হতে পারে, সম্ভবত অন্যান্য ঘোষণাপত্রের স্পেসিফায়ারগুলির সাথে মিলে যায়

- অকার্যকর
- গৃহস্থালির কাজ
- স্বাক্ষরিত গৃহস্থালির কাজ
- স্বাক্ষরবিহীন গৃহস্থালির কাজ
- সংক্ষিপ্ত,, সংক্ষিপ্ত স্বাক্ষরিত সংক্ষিপ্ত কোন int, বা সংক্ষেপে int- এ সাইন ইন
- স্বাক্ষরবিহীন ছোট, অথবা স্বাক্ষরবিহীন সংক্ষিপ্ত int- এ
- int- এ সাইনড, অথবা স্বাক্ষরিত int- এ
- স্বাক্ষরবিহীন, অথবা স্বাক্ষরবিহীন int- এ
- দীর্ঘ, দীর্ঘ স্বাক্ষর , দীর্ঘ int- এ, অথবা স্বাক্ষরিত দীর্ঘ int- এ
- দীর্ঘ স্বাক্ষরবিহীন, অথবা স্বাক্ষরবিহীন দীর্ঘ int- এ
- দীর্ঘ দীর্ঘ, দীর্ঘ দীর্ঘ স্বাক্ষরিত, দীর্ঘ দীর্ঘ int- এ, অথবা স্বাক্ষরিত দীর্ঘ দীর্ঘ int- এ
- দীর্ঘ দীর্ঘ স্বাক্ষরবিহীন, অথবা দীর্ঘ দীর্ঘ int- এ স্বাক্ষরবিহীন
- ভাসা
- ডবল
- দীর্ঘ ডবল
- _ দুর্দান্ত
- ফ্লোট _ কমপ্লেক্স
- ডাবল _ কমপ্লেক্স
- লম্বা ডাবল _ কমপ্লেক্স
- পারমাণবিক ধরণের স্পেসিফায়ার
- স্ট্রাক্ট বা ইউনিয়ন নির্দিষ্টকরণকারী
- এনম সুনির্দিষ্ট
- টাইপডেফের নাম

সুতরাং unsigned intআমরা হয় লিখতে পারেন unsignedবা unsigned int, বা যদি আমরা পাগল বোধ হয় int unsigned,। "পরবর্তীকালে স্ট্যান্ডার্ডটি যথেষ্ট বোকামি" ... কোনও ক্রমে সংঘটিত হতে পারে, সম্ভবত সংশ্লেষিত হতে পারে "allow এটি ভাষার একটি ত্রুটি।

যথাযথ সি কোড ব্যবহার করে unsigned int


1

অন্য একটি প্রশ্ন থেকে আমার উত্তর আনছে ।

সি স্পেসিফিকেশন থেকে বিভাগ 6.7.2:

- স্বাক্ষরবিহীন, বা স্বাক্ষরবিহীন কোন

এর অর্থ unsigned, যখন প্রকারটি নির্দিষ্ট করা হয়নি, তখন এটি ডিফল্ট হবে unsigned int। সুতরাং লেখার unsigned aমত একই unsigned int a

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.