什么是';0';你的意思是C?

什么是';0';你的意思是C?,c,data-structures,C,Data Structures,在用于计算后缀表达式的代码中,写着要将字符作为整数传递,我们将其写为字符-'0'。这有什么意义?这是因为字符-“0”给出了字符的整数值。 C standar说: C11 5.2.1 3: 在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应比前一个字符的值大一个 使用上述事实,可以通过上述表达式计算0到9之间的字符的整数值 char character = '5'; int val = character - '0'; 现在,如果48是0的代码,那么 '5' - '0' =

在用于计算后缀表达式的代码中,写着要将字符作为整数传递,我们将其写为
字符-'0'
。这有什么意义?

这是因为
字符-“0”
给出了字符的整数值。 C standar说:

C11 5.2.1 3: 在源和执行基本字符集中,上述十进制数字列表中
0
之后的每个字符的值应比前一个字符的值大一个

使用上述事实,可以通过上述表达式计算
0
9
之间的字符的整数值

char character = '5';
int val = character - '0';   
现在,如果
48
0
的代码,那么

'5' - '0' = 53 - 48 = 5   // 

这是一种将数字字符转换为数字的快速方法。它基于这样一个事实,即字符被编码为数字,并且C标准要求代表数字的字符必须是连续的(参见下面@EricPostSchil的评论)


因此,如果48是对应于
'0'
,那么49将是
'1'
,依此类推。因此,您可以通过
'1'-'0'=49-48=1

'1'
(字符)转换为
1
(整数)。您确实需要花费数小时阅读一些好的C编程书籍。不要指望我们在这里教你。数字字符是连续的这一事实不是一个假设;根据C 2011 5.2.1 3,这是C标准的明确要求:“在源字符集和执行基本字符集中,上述十进制数字列表中0后的每个字符的值应比前一个字符的值大一个。”@EricPostpischil;谢谢你的标准。引述这句话。@EricPostPichil谢谢,我不知道。@BasileStrynkevitch:C.C 2011 5.2.1 3中不允许使用这种字符集。要求数字是连续的。@EricPostPichil;对。我只是想解释一下算术。