整型数据+=一条printf语句的含义

整型数据+=一条printf语句的含义

查代码看到的一条


            p += printf("%d", T->freq);

我自己编了一个,没有报错:
这个出来的是
22

int main(){
    int p,q;
    p =1; q=2;
    p += printf("%d",q);
    printf("%d",p);
    return 0;
}

这个出来是
2
3

int main(){
    int p,q;
    p =1; q=2;
    p += printf("%d\n",q);
    printf("%d",p);
    return 0;
}

printf的返回值:如果函数执行成功,则返回所打印的字符总数,如果函数执行失败,则返回一个负数
第一个输出了一个2,所以返回值为1,p+=1后p=2
第二个输出了一个2,一个换行符,所以返回值为2,p+=2后p=3