回覆列表
  • 1 # 使用者1465424935672

    我想可以這樣……先在ASCII碼範圍內,先明確兩個定義

    字元:用單引號括起來的,比如"A"、‘Z’、‘0’、‘g’等等

    編碼:那就是字元在ASCII表中排的位置,是數字,比如"A"的位置是0x41,在運算的時候也是用的這個。

    那麼,現在說你的問題:

    0,這是數字

    ‘0’,這是字元,編碼是0x30

    1.所以在字元型變數的情況下:

    0-‘0’=0xD0,0-0=0,‘0’-‘0’=0

    2.0可以是是字元型、整形或者長整型數值的0。

    3.不清楚你說的意思,比如說你在C語言中宣告intk=123;編譯器處理的時候翻譯成機器程式碼肯定是給k這個變數(一般是記憶體中的單元)賦值123或者0x7B(注意在記憶體就沒有什麼十進位制的說法了)。如果用scanf函式給k賦值567,實際你在鍵盤上輸入的是字元‘5’、‘6’和‘7’,但是程式會給你轉換,透過你看不到的程式碼和中間變數執行k=("5"-0x30)*100+("6"-0x30)*10+("7"-0x30),這樣變數就儲存的是數字567而不是三個字元構成的字串“567”了。這個轉換過程是編譯器自己新增的程式完成的,你就不用擔心,就算是輸入浮點數都能輕易的處理——如果你自己寫這轉換過程,反而容易出錯呢!

    4.3已經回答了。

    在C語言處理的時候你不用擔心輸入鍵盤上的數字究竟是什麼樣的情況,但是彙編的時候就要小心了,轉換的過程必須要寫好。

    把字元‘0’~‘9’轉換為數字0~9是很容易的,因為字元"0"~"9"的編碼是0x30~0x39,只要把高四位清零就可以了。

  • 中秋節和大豐收的關聯?
  • 夢幻西遊點攻擊修煉和傷害高低有關係嗎?