一道简单的指针编程题(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:51:38
#include <stdio.h>
void main()
{
char *format="%s,a=%d,b=%d\n";
int a=1,b=10;
a+=b;
printf(format,"a+=b",a,b);
}

运行结果是:
a+=b,a=11,b=10
这是为什么呢?
怎么会有这样的结果呢?

有什么不对么?
a = 1; b=10;
a+= b可以理解为 a = a + b;
之后a = 11;

printf(format, "a+=b", a,b); 可以翻译为

printf("%s,a=%d,b=%d\n","a+=b",a,b);

这里"a+=b"取代 %s的值,a的值也就是11,变成第一个%d,第二个%d变成b,也就是10

楼上说得很对,仔细想想就明白了