回覆列表
  • 1 # 使用者7928449235116

    把 用字串形式 輸入的 2進位制數, 化成10進位制數值, 並按 10 進位制 輸出。

    n=n*2+st2[i]-48; 可以看成 n=n*2+ (st2[i]-48);

    st2[i]-48 就是把 str2[i] 這個字元 的 ASCII 碼值,化成 算術值。

    因為 字元 "0" 的編碼 是 48, 字元 "1" 的編碼 是 49,

    st2[i]-48 就變成了 0 或 1, 看你 輸入的 某位上的 字元 是 "0" 還是 "1"。

    n*2 就是 把 數值 n 乘 2。

    for(i=0;st2[i]!=0;i++) 裡的 !0 就是 一個字元一個字元地處理,直到遇見 字串結束符。

    例如輸入 111。

    i=0; st2[i]=="1"; n = "1"-48 = 1;

    i=1; st2[i]=="1"; n = 1 * 2 + ("1"-48) = 2+ 1 = 3;

    i=2; st2[i]=="1"; n = 3 * 2 + ("1"-48) = 6+ 1 = 7;

    printf("%d\n",n); 輸出 7。

  • 中秋節和大豐收的關聯?
  • 一歲的寶寶,經常把玩具扔出遊戲圍欄外,是什麼原因?