Pascal-操作顺序

时间:2018-07-24 06:07:24

标签: math pascal operator-precedence

我有一个简单但令人讨厌的问题。
当我执行以下代码并为“ 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.

1 个答案:

答案 0 :(得分:1)

这是程序计算的内容。该表在单独的行上分配了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