Ich habe den folgenden Code in der Linux-Kernel-Quelle (2.6.32) gefunden.Was gibt `zurück x? : 1 'bedeuten in C Sprache?
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?
}
das Verhalten zu verstehen, habe ich versucht, manuell den folgenden Code
#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;
}
Und bekam die folgende Ausgabe
f 1
f 1
Und wenn ich es ändern zu
int f(int x)
{
return x?:2;
}
Ich bekomme
Ich möchte nur wissen, ob dieses Verhalten (1 zurückgeben, wenn nichts erwähnt) im Standard erwähnt wird.
@Downvoter; Ein Kommentar würde geschätzt werden? – haccks