SOGO論壇
  登入   註冊   找回密碼
查看: 943|回覆: 3
列印 上一主題 下一主題

[程式設計] 拜託高手解釋一下@@ [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2009-4-11 12:50:13 |只看該作者 |倒序瀏覽
學校考試有一題是這樣子的(C語言)。

int cnt, x;
for(cnt=0, x= 0xffffffff; x; x<<=8, ++cnt);
printf("[%d,%d]",cnt,x);

問cnt和x會是多少,
答案是[4,0],
我知道x=0是為什麼,
可是前面cnt為什麼會是4一直搞不清楚,
能否幫解惑一下
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 3Rank: 3

狀態︰ 離線
2
發表於 2009-4-11 20:01:02 |只看該作者
X= 0x ffff ffff(16進位) =1111 1111 1111 1111  1111 1111 1111 1111(2進位)
迴圈每次 左移8個位元補0
4次就變0
++cnt 沒每迴圈 +1
4次 cnt = 4
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 1 熱心助人

總評分: 威望 + 1   查看全部評分

Rank: 2

狀態︰ 離線
3
發表於 2009-4-12 12:56:54 |只看該作者
[quote]原帖由 09380938 於 2009-4-11 20:01 發表
X= 0x ffff ffff(16進位) =1111 1111 1111 1111  1111 1111 1111 1111(2進位)

謝謝解答。
不過再請教一下,
上面的16進位是如何轉換成2進位的?
一定要轉換成2進位才能繼續做答嗎?

因為我看完後再去做了相似題。

int cnt, x;
for(cnt=0, x=01234567; x; x>>=3, ++cnt);;
printf("[%d,%d]",cnt,x);

那我一樣是要把x=01234567這個轉換成2進位才能繼續做嗎?
還是有點不太了解><

Rank: 2

狀態︰ 離線
4
發表於 2009-5-7 02:43:00 |只看該作者
解釋的好清楚,

原來C語言沒想像中的困難!!!!
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-25 15:11

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部