代码之家  ›  专栏  ›  技术社区  ›  pickle323

C编程:现代方法-第10章项目6-困惑

  •  -2
  • pickle323  · 技术社区  · 6 年前

    有很多人在github上发布了本书问题的答案,我已经查看了其中的一些人&它们看起来都很相似。无论如何,这里有一个指向其中一个的链接。问题在评论和;那么答案就在下面。

    https://github.com/auwsmit/cpama2/blob/master/Ch10/ProgrammingProjects/p6.c

    假设我输入的表达式是 75+=

    我不明白为什么下面的几行行行得通。

    else if (input == '+')
                push(operandA + operandB);
    

    从我的理解来看, 操作数=“7”=ascii 55(&操作数B=“5”=ascii 53。

    所以操作数A+操作数B=ascii 108='l'

    从这里我的理解是,这个字符被分配到内容[0],这意味着main最终应该打印出108作为答案,但它不是。它打印出12的正确答案。

    我哪里做错了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Abhishek Keshri    6 年前

    您是否在给定代码中看到这一行:

    if (input >= '0' && input <= '9')
                push(input - '0');
    

    当输入7和5而不是55和53时,将存储(55-48=7)和(53-48=5)。