Подтвердить что ты не робот

Является ли сокращенный знак вопроса двоеточием?: A Objective-C синтаксис?

Xcode не дает ошибку моей (предполагаемой) опечатки:

 NSString *theme = [[NSUserDefaults standardUserDefaults] objectForKey:@"theme"];
 NSLog(@"Theme: %@", theme ?: @"Default");

Оказывается:

 NSLog(@"Theme: %@", theme ?: @"Default");

работает так же, как:

 NSLog(@"Theme: %@", theme ? theme : @"Default");

Является ли приведенный выше сокращенный синтаксис хорошим для gcc только? Или это часть Objective-C?

4b9b3361

Ответ 1

Это расширение GNU для условного выражения в C:

От здесь:

Расширение GNU на C позволяет исключить второй операнд и использовать неявным образом также первый операнд как второй:

a = x ? : y;