简体   繁体   English

有什么方法可以打印出 function 的主要返回值吗?

[英]Is there any way to print out the return of a function in main?

I'm pretty new to C and I was wondering if there was any way for me to print out the return of a function so that I can see if it's doing what I want it to.我对 C 很陌生,我想知道是否有任何方法可以打印出 function 的返回,以便我可以查看它是否在做我想做的事情。

int sum_arr1_ok() {
    int pass = 1;
    int fail = 0;


    int arr1[] = {1,2,3,4,5}; // small positive values
    int arr2[] = {10,-5,5,8,-2}; //mix of small positive and negative values
    int arr3[] = {-100,90,-374,497,64,-5,22}; // mix of larger positive negative values
    int arr4[] = {0}; // zero
    int arr5[] = {-2,-7,-19,-53,-5,-11}; // all negative values
    int arr6[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; // large array


    int n1 = sizeof(arr1)/sizeof(arr1[0]);
    int n2 = sizeof(arr2)/sizeof(arr2[0]);      //determines the number of elements in an array
    int n3 = sizeof(arr3)/sizeof(arr3[0]);
    int n4 = sizeof(arr4)/sizeof(arr4[0]);
    int n5 = sizeof(arr5)/sizeof(arr5[0]);
    int n6 = sizeof(arr6)/sizeof(arr6[0]);

    if((sum_arr1(arr1,n1) == 15)
    && (sum_arr1(arr2,n2) == 16)
    && (sum_arr1(arr3,n3) == 194)
    && (sum_arr1(arr4,n4) == 0)
    && (sum_arr1(arr5,n5) == -97)
    && (sum_arr1(arr6,n6) == 210)) {
        return pass;  // returns 1 if true
    } else {
        return fail;  // returns 0 if false
    }

I know the if statements a little messy but right now I'm trying to find a way to see if my function is returning what I need it to properly.我知道 if 语句有点混乱,但现在我正试图找到一种方法来查看我的 function 是否正在正确返回我需要的内容。

How would I prepare a main function so that it prints out whether or not my tests passed or failed?我将如何准备一个主要的 function 以便打印出我的测试是通过还是失败?

If you want to know what the function is returning, you need to refactor your code to save the return value in a variable so you can print it.如果您想知道 function 正在返回什么,您需要重构代码以将返回值保存在变量中以便打印。

int rval;

rval = sum_arr1(arr1,n1);
printf("sum_arr1(arr1,n1) = %d\n", rval);
if (rval != 15) return false;

rval = sum_arr1(arr2,n2);
printf("sum_arr1(arr2,n2) = %d\n", rval);
if (rval != 16) return false;

rval = sum_arr1(arr3,n3);
printf("sum_arr1(arr3,n3) = %d\n", rval);
if (rval != 194) return false;

rval = sum_arr1(arr4,n4);
printf("sum_arr1(arr4,n4) = %d\n", rval);
if (rval != 0) return false;

rval = sum_arr1(arr5,n5);
printf("sum_arr1(arr5,n5) = %d\n", rval);
if (rval != -97) return false;

rval = sum_arr1(arr6,n6);
printf("sum_arr1(arr6,n6) = %d\n", rval);
if (rval != 210) return false;

return true;

Alternately, you can have the function print its parameters when it starts and its return value before it returns.或者,您可以让 function 在启动时打印其参数,并在返回之前打印其返回值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM