|  | 
 
| 
如下
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;
}
 | 
 |