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