帕斯卡 - 运算顺序

Pascal - Order Of Operations

我有一个简单但恼人的问题。
当我执行下面的代码并为 'a' 写 10 时,我得到 1010,
但我真的不知道如何,如果我尝试自己解决这个问题。
知道操作顺序,但我有点卡住了,好像我忽略了什么。

请给我一个启动。我将不胜感激。

program task1 (input,output);

var
a, b, c : integer;

begin
    b := 0;
    c := 1;
    readln(a);
    while a > 0 do
    begin
        b := b + c * (a mod 2);
        a := a div 2;
        c := c * 10;
    end;
    writeln(b)
end.

这是程序的计算结果。 table 在单独的一行上分配了 b,然后在同一行上分配了 ac

 a     b      c
10     0      1    Initialization
       0           10 mod 2 = 0
 5           10
      10            5 mod 2 = 1; 0 + 10 * 1 = 10
 2          100
      10            2 mod 2 = 0
 1         1000
    1010            1 mod 2 = 1; 10 + 1000 * 1 = 1010
 0        10000