0
int main()
{   
    int a, b, c;
    a = 10;
    b = 20;
    c = printf("%d", a) + ++b;
    printf("\n%d", c);
}

上面程序的输出似乎是 23,但我不知道它是如何获得的。任何人都可以对此有所了解吗?

4

3 回答 3

4

printf有一个返回值,即它打印的字符总数。

该语句printf("%d",a)将打印,这意味着这里10的返回值为。printf2

剩下的很简单:

c=printf("%d",a)+ ++b;

c的值为2 + 20 + 1,即23

于 2013-09-06T07:17:12.560 回答
1

这里的输出将是两个不同的整数,用于两个不同的printf语句。printf对于代码打印的第一条语句10,然后当该printf语句参与某些赋值语句时,它被视为它正在打印的字符数,即此处为2。然后将其添加到++bie 21( PRE-INCREMENTED ) 中。所以输出是23(2 + 21) 。整个输出如下所示:

10
23
于 2013-09-06T13:30:12.040 回答
0

printf 以整数形式返回打印的字符数。因此,当您打印 10 时,它将返回 2。所以现在

c=printf("%d",a)+ ++b; 会变成

c=2+++b;

因为 b 的值为 20 是预先递增的,这将变为

c=2+21 因此 c=23

于 2013-09-06T07:20:06.307 回答