Ответ 1
Это расширение GNU для условного выражения в C:
От здесь:
Расширение GNU на C позволяет исключить второй операнд и использовать неявным образом также первый операнд как второй:
a = x ? : y;
Xcode не дает ошибку моей (предполагаемой) опечатки:
NSString *theme = [[NSUserDefaults standardUserDefaults] objectForKey:@"theme"];
NSLog(@"Theme: %@", theme ?: @"Default");
Оказывается:
NSLog(@"Theme: %@", theme ?: @"Default");
работает так же, как:
NSLog(@"Theme: %@", theme ? theme : @"Default");
Является ли приведенный выше сокращенный синтаксис хорошим для gcc только? Или это часть Objective-C?
Это расширение GNU для условного выражения в C:
От здесь:
Расширение GNU на C позволяет исключить второй операнд и использовать неявным образом также первый операнд как второй:
a = x ? : y;