如何在三元条件中拟合return语句?

时间:2018-09-06 23:21:25

标签: c

我知道三元条件需要表达式才能起作用,但是我想知道对于这样的事情是否存在聪明的解决方法:

#include <stdbool.h>

bool in_asc_order(const int *arr, size_t arr_size)
{
    int count = 0;
    bool result = false;

    while(count < arr_size - 1)
    {
        (arr[count] <= arr[count + 1])? result = true : (return false);
        count++;
    }

    return result;
}

与其编写类似这样的内容:

#include <stdbool.h>

bool in_asc_order(const int *arr, size_t arr_size)
{
    int count = 0;
    bool result = false;

    while(count < arr_size - 1)
    {
        if(arr[count] <= arr[count + 1])
        {
            result = true;
        }
        else
        {
            return false;
        }
        count++;
    }

    return result;
}

我热衷于使用此条件。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:4)

我不会写那些东西。怎么样?

bool in_asc_order(const int *arr, size_t arr_size)
{
  if (arr_size == 0)
    return true;
  for (size_t i = 0; i < arr_size - 1; i++)
    if (arr[i] > arr[i + 1])
      return false;
  return true;
}