-2

所以我必须为此做跟踪表,但我不了解代码中的所有内容,例如 a==b; c-=--d; b+=a%10

  int a=3,b=4, c=5,d=6;
if(a==b)c++;else c--;
while(d>2){
    c-=--d; b-=a;
}
    int a=3,b=0, c=7,d=5;
if(a=b)d++;else c--;
while(d>2){
    c+=a;a+=--d;
}

    int a=3,b=11, c=15,d=5;
if(a>b)d--;else c--;
for(;d>3;c/=a){
    b=--d;
}

    int a=31,b=14, c=95,d=56;
if(a<b)d++;else c--;
while(d>53){
    b+=a%10;d--; a/=10;
}
4

3 回答 3

1
int a=3,b=4, c=5,d=6;
if(a==b) c++;
else c--;
while(d>2){
    c-=--d; b-=a;
}

==如果 a 和 b 相同,则运算符表示比较。在这种情况下 a 和 b 不同,所以它转到 else 并将 c 变量递减 1。

c 之后的 -- 表示该值在指令执行之前减小。

因此,这意味着 c 将变为 4。

While d > 2,意味着它会循环,只要d > 2

c -= --d; b-=a;

这意味着:

c = c - --d

b = b - a

因此,这意味着每次执行循环时 d 的值都会减少 1,并且会一直循环直到大于 2。

int a=3,b=0, c=7,d=5;
if(a=b)d++;
else c--;
while(d>2){
    c+=a;a+=--d;
}

操作符的=意思是赋值,所以当它执行的时候a=b,它会赋值给bto,a但是因为它是0,这意味着false它会去else并且把c的值减1。

所以 c 将变为 6。

while 循环类似于第一个循环。

int a=3,b=11, c=15,d=5;
if(a>b)d--;else c--;
for(;d>3;c/=a){
    b=--d;
}

这是一个非常简单的 if 语句。它检查a是否大于b。如果是,则执行 d--,否则执行 c--。

至于 for 循环,它会一直d > 3执行,并且c /= a每次都会执行。

c /= a也可以写成c = c / a

int a=31,b=14, c=95,d=56;
if(a<b)d++;else c--;
while(d>53){
    b+=a%10;d--; a/=10;
}

最后一个 if 语句也很简单,与上面的类似。

while 循环将一直执行到d > 53.

里面的命令b+=a%10;d--; a/=10;也可以写成:

b = b + a % 10

d--

a = a / 10

于 2013-11-13T17:50:25.167 回答
1
c -= --d;

意思是

c = c - (--d);

这同样适用于

b += a%10

也就是说

b = b + (a%10)

您可以对 *、/ 和 % 运算符执行相同操作

--d 表示 d 在指令执行之前减小, ++d 表示 d 将在指令执行之前增加

if(a==b)c++;else c--;

与更具可读性的相同

if (a==b)
{
    c = c + 1;
}
else
{
    c = c - 1;
}
于 2013-11-13T17:35:41.230 回答
0
a==b

这是一个重要的布尔条件,它检查 a 是否等于 b,如果相等则返回 true,否则返回 false。这可以更改(强制转换)为int值 1 或 0。

c-=--d;

我不喜欢编写这样的代码。

However c -= k statement is equivalent to c = c-k
and --d; is same as decrement d by 1.

代码在一个语句中完成了这两件事。但是顺序很重要。因为 -- 出现在 d 之前,所以首先评估这个减量,然后考虑 -= 运算符。

同样对于 +=

I would suggest looking up a good C++ learning resource such as www.cplusplus.com or www.learncpp.com

于 2013-11-13T17:32:32.677 回答