帕斯卡 - 运算顺序
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
,然后在同一行上分配了 a
和 c
:
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
我有一个简单但恼人的问题。
当我执行下面的代码并为 '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
,然后在同一行上分配了 a
和 c
:
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