关于c语言printf函数%n的。
#include<stdio.h>intmain(){intn;char*m2="Decimal";char*m3="Octal";char*m4="Hexadecima...
#include<stdio.h>
int main()
{
int n;
char*m2="Decimal";
char*m3="Octal";
char*m4="Hexadecimal";
printf("%s%s%s%n",m2,m3,m4,&n);
printf("\n\n%d\n",n);
return 0;
}
n显示的值是1995742772但把int n;放到printf上面n显示的值就是3?为什么?
还有%n是字符串数目还是字符数目?
声明变量n的位置变化怎么也会改变n的值?上面这个值是1995742772
#include<stdio.h>
int main()
{
char*m2="Decimal";
char*m3="Octal";
char*m4="Hexadecimal";
int n;
printf("%s%s%s%n",m2,m3,m4,&n);
printf("\n\n%d\n",n);
return 0;
}
n值就为3?为啥不是23? 展开
int main()
{
int n;
char*m2="Decimal";
char*m3="Octal";
char*m4="Hexadecimal";
printf("%s%s%s%n",m2,m3,m4,&n);
printf("\n\n%d\n",n);
return 0;
}
n显示的值是1995742772但把int n;放到printf上面n显示的值就是3?为什么?
还有%n是字符串数目还是字符数目?
声明变量n的位置变化怎么也会改变n的值?上面这个值是1995742772
#include<stdio.h>
int main()
{
char*m2="Decimal";
char*m3="Octal";
char*m4="Hexadecimal";
int n;
printf("%s%s%s%n",m2,m3,m4,&n);
printf("\n\n%d\n",n);
return 0;
}
n值就为3?为啥不是23? 展开
展开全部
这才是你上面代码的结果,n=23,,23是由printf函数返回值得到的,第一个printf 在此输出了23字符的结果,所以返回值是23,而你这里用%n(字符数目)和&n,就把23赋值给了n。
用一下代码来验证:
#include<stdio.h>
int main()
{
int n,num;
char*m2="Decimal";
char*m3="Octal";
char*m4="Hexadecimal";
num = printf("%s%s%s%n",m2,m3,m4,&n);
printf("\n\n%d\n",n);
printf("\n\n%d\n",num);
return 0;
}
输出结果:
这与int n 在哪里定义无关,只要放在printf前面就好。
展开全部
%n与其他格式说明符号不同。%n不向printf传递格式化信息,而是令printf把自己到该点已打出的字符总数放到相应变元指向的整形变量中。
追问
那为啥是3?
追答
你上面再多加三个字符就变成26了,这个输出的是你输出字符的个数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-12
展开全部
他可能将n当指针了
%n为字符数目
%n为字符数目
追问
怎么改?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打印结果应该是:
DecimalOctalHexadecimal
23
%n将当前printf已打印的字符数写入一个int指针
DecimalOctalHexadecimal
23
%n将当前printf已打印的字符数写入一个int指针
追问
但就是3啊不是23.。
追答
我这里执行的结果就是23,没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询