int main()
{
int a, b, c;
a = 10;
b = 20;
c = printf("%d", a) + ++b;
printf("\n%d", c);
}
上述程序的输出似乎是23,但我不知道它是如何获得的。任何人都可以对此有所了解吗?
答案 0 :(得分:4)
printf
有一个返回值,即它打印的字符总数。
语句printf("%d",a)
将打印10
,这意味着此处printf
的返回值为2
。
其余的很容易:
c=printf("%d",a)+ ++b;
c
的值为2 + 20 + 1
,即23
。
答案 1 :(得分:1)
这里输出将是两个不同的整数,用于两个不同的printf
语句。对于第一个printf
语句,代码打印10
,然后当此printf
语句参与某些赋值语句时,它将被视为字符数打印即 2 。然后将其添加到++b
,即21
( PRE-INCREMENTED )。因此输出为23
(2 + 21)。
整个输出看起来像这样:
10
23
答案 2 :(得分:0)
printf返回以整数形式打印的字符数。因此,当您打印10时,它将返回2。 所以现在
c = printf(“%d”,a)+ ++ b; 将成为
c = 2 + ++ b;
由于值为20的b预先递增,因此将变为
C = 2 + 21 因此c = 23