Tôi đã đi qua đoạn mã sau trong nguồn nhân Linux (2.6.32).`return x là gì? : 1` có nghĩa là trong ngôn ngữ 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?
}
Để hiểu được hành vi này, tôi đã tự thử đoạn code sau
#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;
}
Và có đầu ra sau đây
f 1
f 1
Và khi tôi thay đổi nó để
int f(int x)
{
return x?:2;
}
Tôi đang nhận được
f 2
f 1
Tôi chỉ muốn biết liệu hành vi này (trở về 1 nếu không có gì đề cập) được đề cập trong tiêu chuẩn.
@Downvoter; Một bình luận sẽ được đánh giá cao? – haccks