Я столкнулся с следующим кодом в источнике ядра Linux (2.6.32).Что означает `return x? : 1 означает на языке C?
do_wait_for_common(struct completion *x, long timeout, int state)
{
if (!x->done) {
/* some code here */
}
x->done--;
return timeout ?: 1; <--- What it returns?
}
Чтобы понять поведение, я вручную попытался следующий код
#include <stdio.h>
int f(int x)
{
return x?:1;
}
int main()
{
printf("f %d\n", f(0));
printf("f %d\n", f(1));
return 0;
}
И получил следующий вывод
f 1
f 1
И когда я изменить его на
int f(int x)
{
return x?:2;
}
Я получаю
f 2
f 1
Я просто хочу знать, упомянуто ли это поведение (возврат 1, если ничего не упомянуто) в стандарте.
@Downvoter; Комментарий будет оценен? – haccks