اطلاعیه

Collapse
No announcement yet.

مشکل در مورد متغیر int

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در مورد متغیر int

    سلام دوستان
    یه مشکلی چند وقت قبل برام پیش اومد میخوام الان دلیلش رو بپرسم.
    میدونیم که متغیر های int شانزده بیتی اند. یعنی از صفر تا 65535 میره بالا ولی من هرچی تست میکردم تا 32768 که میره بالا بعد از اون منفی میشد. یعنی براش فرقی نمیکرد که signed یا unsigned باشه. حتی وقتی متغیر رو long هم تعریف میکردم همینطور بود. من این متغیر ها رو با دستور sprintf روی ال سی دی نمایش میدادم. تنظیمات مربوط به sprintf رو هم انجام میدادم ولی بازم مشکل پا برجا بود.
    www.gam-co.blogsky.com

    #2
    پاسخ : مشکل در مورد متغیر int

    نوشته اصلی توسط vahidabedi
    سلام دوستان
    یه مشکلی چند وقت قبل برام پیش اومد میخوام الان دلیلش رو بپرسم.
    میدونیم که متغیر های int شانزده بیتی اند. یعنی از صفر تا 65535 میره بالا ولی من هرچی تست میکردم تا 32768 که میره بالا بعد از اون منفی میشد. یعنی براش فرقی نمیکرد که signed یا unsigned باشه. حتی وقتی متغیر رو long هم تعریف میکردم همینطور بود. من این متغیر ها رو با دستور sprintf روی ال سی دی نمایش میدادم. تنظیمات مربوط به sprintf رو هم انجام میدادم ولی بازم مشکل پا برجا بود.
    سلام.
    int خب 16 بیتی هست ولی از 32768- تا 32768+ هست.
    برای 0 تا 65535 باید از signed int یا unsigned short int استفاده کنین.

    unsigned short int رو هم امتحان کردین؟
    http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

    دیدگاه


      #3
      پاسخ : مشکل در مورد متغیر int

      short رو امتحان نکردم ولی signed و unsigned رو امنحان کردم. حتی long رو هم امتحان کرد ولی نشد که نشد. شما هم یه تستی بکنید ببینید چی میشه.
      www.gam-co.blogsky.com

      دیدگاه


        #4
        پاسخ : مشکل در مورد متغیر int

        [code=c]
        void main()
        {
        char buffer[];
        signed int i=65535;
        lcd_init(16);
        lcd_clear();
        lcd_gotoxy(0,0);
        sprintf(buffer,"a= %u",i);
        lcd_puts(buffer);
        while(1);
        }
        [/code]

        http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

        دیدگاه


          #5
          پاسخ : مشکل در مورد متغیر int

          خیلی ممنون. مشکل از اونجا بود که من d% میذاشتم بجای u% .
          راستی تفاوت این دوتا در چیه؟؟
          www.gam-co.blogsky.com

          دیدگاه


            #6
            پاسخ : مشکل در مورد متغیر int

            نوشته اصلی توسط vahidabedi
            خیلی ممنون. برای sprintf تنظیماتی هم انجام دادید؟
            [code=c]
            #include <stdio.h>
            [/code]
            http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

            دیدگاه


              #7
              پاسخ : مشکل در مورد متغیر int

              سوال بعدی اینکه اگه بخوایم مثلا بجای i عدد منفی 40000 رو نمایش بدیم باید چیکار کرد؟
              مرسی
              www.gam-co.blogsky.com

              دیدگاه


                #8
                پاسخ : مشکل در مورد متغیر int

                نوشته اصلی توسط vahidabedi
                سوال بعدی اینکه اگه بخوایم مثلا بجای i عدد منفی 40000 رو نمایش بدیم باید چیکار کرد؟
                مرسی
                باید از long int استفاده کنید.
                از 2147483648- تا 2147483647+ هست.
                توی کتاب "میکروکنترلرهای AVR" آقای جابر الوندی صفحه 62 جدولش هست.
                http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                دیدگاه


                  #9
                  پاسخ : مشکل در مورد متغیر int

                  نوشته اصلی توسط vahidabedi
                  خیلی ممنون. مشکل از اونجا بود که من d% میذاشتم بجای u% .
                  راستی تفاوت این دوتا در چیه؟؟
                  u% برای نمایش عدد صحیح بدون علامت در مبنای 10 هست.
                  d% برای نمایش عدد صحیح علامت دار در مبنای 10 هست.
                  فکر کنم بخاطر اینه که signed int از 0 تا 65535 رو شامل میشه و بدون علامت هست.
                  http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                  دیدگاه


                    #10
                    پاسخ : مشکل در مورد متغیر int

                    نوشته اصلی توسط vahidabedi
                    میدونیم که متغیر های int شانزده بیتی اند.
                    سلام
                    طول نوع در محیط های 16 بیتی مثل DOS شونزده بیتی و در میحط های 32 بیتی مثل ویندوز 32 بیت است.

                    دیدگاه

                    لطفا صبر کنید...
                    X