
九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。 -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。 -毛泽东
TMD,为了我的理论,买了!
int g(int b) { b++; return(b); }
int f(int a) { a++; g(a); printf("knocker=%d\n",a);/*注意这里,Knoker更换成不同的试试,比如:OK,NO,神.......*/ }
main() { int a=1; printf("%d\n",f(a));
getch(); }
在反驳你之前,我们先做个小实验: main() { int a=1; printf("%d",(printf("GOD\n"))); getch(); }
你能猜出计算机会输出多少吗? GOD 4
为什么,原因就是printf是个有返回值的函数,返回值是多少? printf的返回值其实就是""里面的长度,比如我这个程序的"GOD\n" 他就有4个字符,所以返回值是4
结论: printf()有返回值,返回值是其 "" 里面字符串的长度
用这个结论套到我对这个帖子的回答后.很快我们就可以推出你举的例子了,所以,你的例子不是推翻,而是更加进一步的证明了神的伟大性~~~~~[em36]
经我再次验证神的理论好象是正确的!
不过,付出去的钱如泼出去的水,收是收不回去的
神啊!!
给个理由先???
你就是一排胡言,我上面是白说了,举个例子给你,你在函数int f(int a);中的
b=a+g(a);后在家一个空函数看看是什么结果!!!!
还有你的那个b+=2;和b=b+2;的理论,我没有看到过可不可以说的详细一点,我不太信!!!
等等天使,我没看明白你的帖子,我所举的例子中并没有 b=a+g(a); 这个东西出现啊?! 还有,你说要在后面加一个空函数,不理解~~~
请写一个程序出来我好反驳呀!就像knocker那样,不过不要收费啊!!!
我就喜欢论坛这点,有什么大家都可以来一起讨论~~~嘻嘻
来了:
#include<stdio.h> int a=12; int g(int n) { a/=2; return(a+n); } int k(int i) { } int f(int a) { static int b=0; a/=(b+2); b+=g(a); k(1); } void main() { while(a>0) printf("%d\n",f(a)); }
恩~着实给了我一棒!
我认为,系统在对待 int k(1) 和 int k(a) 无返回值的时候,态度是不同的,这点可以举例子:
int k(int i) { }
main() { int a=99;
printf("%d",k(99)); getch(); }
这样,输出的是99
int k(int i) { }
main() { int a=99;
printf("%d",k(a)); getch(); }
而这样,输出的是k()函数的地址。
所以我认为,当int k(99) 的时候,如果k函数中没有return 那么,系统就会把99当成是k的返回值,同时认为他有return。
int k(99) {}
等价于
int k(99) {return 99;}
当int k(a) 的时候,如果k函数中没有return 那么,系统就会返回个地址。
[此贴子已经被作者于2004-08-11 10:04:55编辑过]