【发布时间】:2016-08-29 14:13:41
【问题描述】:
#include<stdio.h>
int sel=5,out=10;
int findout(){
if(sel==5)
return out*=2;
}
int main(){
int ret1,ret2=-1;
ret1=findout();
printf("before %d %d %d",sel,out,ret1);
sel=8;out=7;
ret2=findout();
printf("\nafter %d %d %d",sel,out,ret2);
}
输出:
5 20 20 之前
8 7 8 之后
编辑:我的编译器没有显示任何警告。在这里你可以看到它。 它在 Ubuntu 操作系统上的代码块 GNU GCC 编译器上
g++ -c Untitled1.cpp -o Untitled1.o
g++ -o Untitled1 Untitled1.o
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
在第二种情况下,当我没有返回任何值(sel=8 和 out =7)时,ret2 的值怎么会是 8?
【问题讨论】:
-
注意你的编译器警告。
-
你希望“no value”的值是什么做什么?
-
另外,避免使用全局变量:通常它们弊大于利(代码难以理解,意外更改,...)。
-
那些是一些病态的编辑。从垃圾级别提升到彻头彻尾的教育。我会赞成编辑,但我不知道如何。
-
你的代码还能编译吗?
标签: c return return-value function-call