藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


位的左移問題!

unsigned long sum1=0;
        unsigned int    sum=0;
        unsigned int    z=0;
請問下面3種情形有何不同,為什麼?謝謝!

(1)   sum = 0;
        sum += 0x4500;
        z = 192<<8;
        sum1 = z + 0x4500;

(2)   sum = 0;
       sum += 0x4500;
       z = 192<<8;
       sum1 = z + sum;

(3)  sum = 0;
       sum += 0x4500;
       z = 192<<8;
       sum1 = (192<<8) + sum;

位的左移問題!

沒看出sam1結果有何不同!

位的左移問題!

位的左移問題!

都一樣

你使用什麼平台

位的左移問題!

我用的是Keil v6.12 C51 編譯器
他的內核跟ANSI C差不多。

位的左移問題!

但是使用其它c編譯器都正常的

我用cygwin

你自己寫個小測試程序看看吧
下面是我的測試程序
[code]
main()
{
        {
                int sum = 0;
                sum += 0x4500;
                int z = 192<<8;
                int sum1 = z + 0x4500;
                printf("%d\n",sum1);
        }
       
        {
                int sum = 0;
                sum += 0x4500;
                int z = 192<<8;
                int sum1 = z + sum;
                printf("%d\n",sum1);
        }
        {
                int sum = 0;
                sum += 0x4500;
                int z = 192<<8;
                int sum1 = (192<<8 )+ sum;
                printf("%d\n",sum1);
        }
}
輸出
$ ./a.exe
66816
66816
66816
[/code]

位的左移問題!

up



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com