|
藍森林 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 |
| |