Turbo C printf问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 04:39:20
main()
{ int a=21,b=11;
printf("%d\n",--a+b,--b+a);
}
当字符格式小于输出的数,怎么算,如果后面是三个呢?而%D只有一个

%D只有一个就显示第一个","后面的结果,%D多了依此类推

main()
{ int a=21,b=11;
printf("%d,%d\n",--a+b,--b+a);
}
main()
{ int a=21,b=11;
printf("%d,%d,%d\n",--a+b,--b+a,a+b);
}

后面需要几个加几个格式化字符串

int a=1;
int b=2;
int c=3;
printf("第一个数:%d,第二个数: %d, 第三个数: %d ", a,b,c);
输出:
第一个数:1,第二个数:2,第三个数:3
----------------------------------------
如果字符格式小于真实输出时,会以真实长来输出,设置的格式会失效的。如果真实长度小时设置格式长度,就按你设置的输出。

输出结果为30
因为:
1.当字符格式小于输出表列数目时,从左到右取要输出的表达式。所以本例中只会输出表达式--a+b的值!若有printf("%d%d",a,b,c);则输出a和b的值!
2.但是,无论输出几个值,C语言中函数求值时,都要从右到左依次计算函数各参数的值!所以本例中虽然只输出表达式--a+b的值,但仍然要先计算表达式--b+a,(计算完此表达式的值时,变量b的值已变为10),然后再计算并输出表达式--a+b的值(先对a自减1,a变为20,然后20+10=30)!!!