想知道这段程序是怎么得到1的输出结果为何不为6呢

int a=1;
执行printf(“%d”,(a+5,a++));输出的结果为1

因为(a+5, a++)为括号表达式,值为括号表达式右边表达式的值,
右边的a++就是在使用的a的值后在让a自增一次,而使用a的值时a=1,所以打印结果为1,
如果再在这个printf后面再加一个打印一句打印a的值,就会打印出2.

#include <stdio.h>
int main(void){
    int a=1;
    printf("%d",(a+5,a++));
    printf("\n%d",a);
    return 0;
} 

img

逗号表达式,是c语言中的逗号运算符将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。(a+5,a++)为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值即 a++,又因为 ++ 在后,所以先返回 a = 1 的值输出 ,再执行 a++ = 2。