有什么办法可以打印出main函数的返回值?

时间:2020-06-14 21:34:46

标签: c

我对C还是很陌生,我想知道是否有什么办法可以打印出函数的返回值,以便我可以查看它是否在执行我想要的功能。

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
    }

我知道if语句有点混乱,但是现在我正试图找到一种方法来查看我的函数是否正确返回了我需要的函数。

我应该如何准备主要功能,以便打印出我的测试通过还是失败?

1 个答案:

答案 0 :(得分:0)

如果您想知道函数将返回什么,则需要重构代码以将返回值保存在变量中,以便打印出来。

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;

或者,您可以让函数在启动时打印其参数,并在返回之前返回其返回值。