九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。 -老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 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编辑过]