我想可以這樣……先在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,只要把高四位清零就可以了。
我想可以這樣……先在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,只要把高四位清零就可以了。