۲۵-شهریور-۱۳۸۵, ۲۲:۱۰:۳۹
۲۶-شهریور-۱۳۸۵, ۱۸:۲۱:۵۰
آدرس همیشه باید از نوع unsigned تعریف بشه ! تعجب نکن که CPU تفاوت اعداد منفی و مثبت رو تشخیص نمیده !! در واقع این برنامه نویس هست که مشخص می کنه از بیت علامت باید استفاده بشه یا نشه ! اعداد unsigned دارای بیت علامت نیستند و اون بیت علامت به عنوان قسمتی از داده باینری محسوب میشه ! شما که متغیر اشاره گرت رو از نوع int تعریف کردی در واقع بطور پیش فرض علامت دار یا signed در نظر گرفته میشه . موقع چاپ هم میخوای که به عنوان یک عدد علامتدار باهاش برخورد بشه و اینه که بیت علامت رو کامپایلر در نظر میگیره و ممکنه در صورت 1 بودن اون بیت ، باهاش مثل یک عدد منفی برخورد کنه و عددی منفی برات چاپ بشه .
من همین برنامه رو چک کردم ولی در هر دوحالت ( علامتدار و بی علامت ) عددی مثبت و مشابه دریافت کردم . علتش این بود که بیت آخر در دو حالت 0 بود و در نتیجه تغییری در جواب حاصل نمیشد ولی توی سیستم شما وضعیت میتونه فرق بکنه . میتونه اونجا متغیر در آدرسی قرار بگیره که بیت علامت هم بخواد 1 بشه . اون وقته که جواب ها فرق خواهد کرد !
من همین برنامه رو چک کردم ولی در هر دوحالت ( علامتدار و بی علامت ) عددی مثبت و مشابه دریافت کردم . علتش این بود که بیت آخر در دو حالت 0 بود و در نتیجه تغییری در جواب حاصل نمیشد ولی توی سیستم شما وضعیت میتونه فرق بکنه . میتونه اونجا متغیر در آدرسی قرار بگیره که بیت علامت هم بخواد 1 بشه . اون وقته که جواب ها فرق خواهد کرد !