|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如下
#include <stdio.h>
int main(void)
{
double test(int v);
int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
int i;
for(i=0;i<10;i++)
{
test(a[i]);
printf("%d\n",a[i]);
}
}
double test(int v)
{
v=v>0?v:0;
}
如果printf在主函数里,这个test像是没执行或者没返回值,值没储存一样。负数输出的还是负数。
但是如果把它放在test函数里,他就能负数输出0.
这到底是个什么道理,执行主函数test的时候是没有执行?为什么a[i]小于0返回值还是a【i】呢
本帖最后由 zltzlt 于 2020-1-4 19:07 编辑
v=v>0?v:0; 是覆盖了参数 v,不会改变参数 v。楼主可以试试这样:
- #include <stdio.h>
- int main(void)
- {
- int a[10] = {1, 2, 3, 4, -1, -2, -3, -4, 2, 3};
- int i;
- for (i = 0; i < 10; i++)
- {
- a[i] = test(a[i]);
- printf("%d\n", a[i]);
- }
- }
- int test(int v)
- {
- return v > 0 ? v : 0;
- }
复制代码
|
|