[英]What does it mean to subtract '0' from a variable in C?
void push(float[],float);
這里st[]
是float數據類型的棧, exp[]
是char數據類型的數組,存放后綴表達式。
push(st,(float)(exp[i]-'0'));
不過,我無法弄清楚(exp[i]-'0')
部分的目的。 為什么我們要減去'0'
?
字符基本上無非是一個整數,其值是字符的編碼。
在最常見的編碼方案ASCII中,字符'0'
的值是48
,而字符'3'
的值是51
。 現在,如果我們有一個包含字符'3'
的變量someChar
並且你執行someChar - '0'
它與執行51 - 48
相同,這將導致值3
。
因此,如果您從某處讀取一個數字作為字符,則減去'0'
以獲得該數字的整數值。
這也適用於其他編碼,不僅是 ASCII,因為 C 規范規定所有編碼必須具有連續順序的數字。
請注意,此“技巧”不能保證對任何非數字字符都有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.