Zichenya 发表于 2020-3-17 15:50:43

求助求助

printf("##%*d\n",i,i);
这里面的*号是干嘛用的?
while(printf("*"))
这个返回值是1?

sunrise085 发表于 2020-3-17 16:00:21

第一个问题,格式化字符串的一项功能。前面的两个#没什么意思,去掉后是这样子的。printf("%*d\n",i,i)
%d是输出int类型.d前可以添加一个整数,用于控制输出宽度,如:printf("%8d\n"i,i);
其中,控制宽度的证书也可以格式化,就是用* 代替,,然后在后面写上该参数,就是我们现在看到的样子printf("%*d\n",i,i)。

第二个问题,printf函数返回值是打印的字符个数。这句话中打印了一个*,所以返回值是1

墨羽岚 发表于 2020-3-17 16:06:37

本帖最后由 墨羽岚 于 2020-3-17 16:09 编辑

我也没搞懂这*号代表啥,如果是代表数字的话就是指定输出数据的长度#include<stdio.h>

int main()
{
        int i=1;
        printf("##%8d",i);
        return 0;
}
;输出为##       1;
若是printf("##%*d",i)的话就是把i的存储地址输出#include<stdio.h>

int main()
{
        int i=1;
        printf("##%*d",i);
        return 0;
}
;输出为##4198704
第二问没看懂在说啥。。。问题目把原题都放上来好些

努力的小c 发表于 2020-3-17 22:57:24

printf中的%*d的意思是输出*个宽度的%d
页: [1]
查看完整版本: 求助求助