prin() { printf("**********"); } main() { int a ; a=prin(); printf("%d",a); 输出结果为什么是10

如题所述

int prin() { //还有prin函数至少应该有int类型的返回值才行吧
return printf("**********"); //你的这个函数定义有问题吧,至少要return吧
}
main()
{
int a ;
a=prin();
printf("%d",a);


输出的结果确实是10,你有这个疑问,说明你对printf函数不太熟悉,printf函数的原型是:
int printf(const char *format,[argument]);
也就是说printf函数会返回一个int类型的数据,那么这个int类型的数据的意义是什么呢? 他的意义就是printf实际输出的字符的个数,而你的调用printf("**********");中有10个星号,也就是实际上printf函数输出了10个字符,所以肯定返回的是10.最后prin(); 函数返回的也是10了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-10
//你的prin函数等价于下面的代码。
int prin() {
return printf("**********"); //返回输出的*号个数。
}

void main()
{
int a ;
a=prin(); //prin返回*号个数,这儿是10。
printf("%d",a); //这个语句输出10。
}
第2个回答  2012-05-10
a 是整型,输出的当然是长度了。。。。。。。

prin() { printf("***"); } main() { int a ; a=prin(); printf("%d...
} main(){ int a ;a=prin();printf("%d",a);} 输出的结果确实是10,你有这个疑问,说明你对printf函数不太熟悉,printf函数的原型是:int printf(const char *format,[argument]);也就是说printf函数会返回一个int类型的数据,那么这个int类型的数据的意义是什么呢? 他的意义就是printf实际输...

...{int p(); int a; a=p(); printf("%d",a); } p() {return(printf("*...
然后打a a为printf的返回值,此返回值为printf打印的字符的长度

...a; for(a=1;a<5;a++) a=2*a; printf("a=%d",a); }为什么答案a=7_百 ...
然后a=2*a; (a=2)然后a++ (a=3)然后a<5成立,继续for循环 (a=3)然后a=2*a; (a=6)然后a++ (a=7)然后a<5不成立,退出for循环 (a=7)

...main() { int a=0; a+=(a=8); printf("%d\\n",a); } 答案是16,求过 ...
a+=(a=8);相当 a=(a+(a=8))a=8 a=a+a=8+8=16 很简单

...{int a; printf("%d\\n",(a=3*5,a*4,a+5)); } 想问a最后是1
a值最后是15没错。不过 输出的是括号里面的 (a=3*5,a*4,a+5)这个是一个逗号运算表达式,值是最右的值,也就是a+5的值。所以 输出是15+5=20 需要注意的是赋值优先级高于逗号,所以 a=3*5是第一部分 a*4是第二部分 a+5是第三部分。

main() { int a ; scanf("%d",&a); if(a++<9)printf("%d\\n",a); el...
在if的时候a=9,所以进入else。但是在a++<9返回值之前a=9,返回值之后a=10,这是在进入else之前完成的。在else里输出时a=10,输出之后a=9 其实a++这种++在右的,就是先用再加,相对的++a则是先加再用

...void main() { int a; a = (int)((double)(3 \/ 2) + 0.5 + (int...
a = (int)((double)(3 \/ 2) + 0.5 + (int)1.99 * 2);(double)(3 \/ 2)==>(double)(1)(int)1.99 * 2==>1*2 a=(int)(1.0+0.5+2)=(int)(3.5)=3

...main() { int a =2; a%=4-1; printf(“%d”,a); a+=a*=
问题不完整啊,

main() { int a; scanf("%d",&a); if(a++>10) printf("%d\\n",++a...
当a=10的时候执行if,a++是先比较后加10不大于10,if不成立,但a还是加1,if执行完a是11,然后执行else,同上a--是先输出a的值,再对a减1 。a=11的时候执行if,还是先比较11后相加,11大于10,然后a加1,if语句执行完a是12再执行if后面的printf,++a是先加然后再输出,所以结果是13 ...

...main() { int a[]={1,2,3,4,5}; printf("%d\\n",a[]); }
你这样写,连编译都过不了,[]是下标运算符,如果你需要打印数组里元素的值,应该在[]里边加上该元素的位移值,比如想打印1,为a[0],想打印5,为a[4]。如果你想打印该数组的初始地址值,则需要将[]去掉。直接为:printf("%d\\n", a);,这样就行了。

相似回答