【发布时间】:2018-09-06 23:21:25
【问题描述】:
我知道三元条件需要表达式才能工作,但我想知道这样的事情是否有聪明的解决方法:
#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;
}
我热衷于使用这个条件。任何帮助都会很棒。
【问题讨论】:
-
了解表达式。 C 主要是关于表达式的。 (一些......)语法说:
STMT := returnEXPR ';'而 EXPR 可以是三元表达式。 -
为什么不简化你的逻辑,只在下一个元素大于或等于前一个元素时才提前返回?
-
你不能。使用
if。 -
@squiguy 你的意思是小于吗?如果 int 数组按升序排列,此函数将返回 true。
-
对不起,是的。我把它翻过来了。
标签: c