আমি যখন 2D array এর জন্য

memset(grid, 0, sizeof(grid));

এই ভাবে initilize করি তখন সব ঠিকঠাক কাজ করে । ০ এর জায়গায় -১ দিলেও কাজ করে কিন্তু অন্য কোনো সংখ্যা দিলে কাজ করে না কেন ?

ধন্যবাদ ।

asked 22 Mar '16, 12:54

menon's gravatar image

menon
4.7k335

edited 23 Mar '16, 02:50

Tamim%20Shahriar%20Subeen's gravatar image

Tamim Shahriar Subeen ♦♦
6.2k21128


এখানে একটু ছোটো হিসাব আছে ।

memset(a, b, sizeof a)

এখানে আমরা b এর যে মানটি দিবো তা প্রতি আট বিটে স্টোর করবে ।

এবার আট বিটে তিনটি সংখার মান দেখি

0 = 00000000
-1 = 11111111
1 = 00000001

এবার ৩২ বিটে এদের মান দেখি

0 = 00000000 00000000 00000000 00000000
-1 = 11111111 11111111 11111111 11111111
1 = 00000000 00000000 00000000 00000001

তাই আমরা যখন memset(a, 0, sizeof a) দেই তখন প্রতি আট বিটে 00000000 আসে ফলে যখন আমরা চার বাইট নেই ইন্টিজারের জন্য তখন সমস্যা হয় না ।

তেমনি আমরা যখন memset(a, -1, sizeof a) দেই তখন প্রতি আট বিটে 11111111 আসে ফলে যখন আমরা চার বাইট নেই ইন্টিজারের জন্য তখন সমস্যা হয় না ।

কিন্তু আমরা যখন memset(a, 1, sizeof a) দেই তখন প্রতি আট বিটে 00000001 আসে ফলে যখন আমরা চার বাইট নেই ইন্টিজারের জন্য তখন সমস্যা হয় ।

memset(a, 0, sizeof a) //  00000000 00000000 00000000 00000000 = 0
memset(a, -1, sizeof a) // 11111111 11111111 11111111 11111111 = -1
memset(a, 1, sizeof a) //  00000001 00000001 00000001 00000001 = 16843009

এজন্যই 0 আর -1 এর জন্য ঠিক আসে ।

permanent link

answered 22 Mar '16, 16:24

Sharif%20Chowdhury's gravatar image

Sharif Chowdhury
3.5k111

ভাই 1D array এর জন্য তো কোন সমস্যা হয় না

(22 Mar '16, 17:31) menon

হওয়ার কথা ।

(22 Mar '16, 17:35) Sharif Chowdhury

হুম 1D এর জন্য সমস্যা হচ্ছে । বিষয় টা আমি আগে খেয়াল করি নি । ধন্যবাদ :)

(23 Mar '16, 02:26) menon
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×56
×3
×1

question asked: 22 Mar '16, 12:54

question was seen: 811 times

last updated: 23 Mar '16, 02:50