Я просматривал чей-то другой код и не смог получить синтаксис следующего
c = x<0 ? x = -x,'L':'R';
а также
if(x) x--,putchar(c);
Исходя из символики, ясно, что в первой переменной с присваивается значение «L» или «R». А во втором выполняются и x—, и putchar (). Но какова роль оператор запятой Вот??
Но какова роль оператора запятой здесь?
В этом случае код запутывания. Первоначальный разработчик, вероятно, думал, что они были умны.
Оператор запятой позволяет вам выполнять несколько действий в одном выражении, но вам почти всегда лучше использовать два выражения. В этих случаях он расширяется до:
if( x < 0 ) {
x = -x;
c = 'L';
} else {
c = 'R';
}
а также
if(x) {
x--;
putchar(c);
}
Оператор запятой оценивает оба выражения и возвращает значение последнего.
Читаемость в обоих случаях может быть улучшена с помощью отдельных операторов, а не оператора запятой. Первая попытка подать if
утверждение в условное выражение. Но второй уже использует if
Заявление, поэтому неясно, почему оператор запятой был выбран вообще.
Роль оператора запятой в этом контексте состоит в том, чтобы разрешить использование условного оператора и написать присваивание как часть вычисления одного из выражений.
На мой взгляд, это просто ужасный стиль. if
Заявление было бы лучше передать смысл этого кода, и вряд ли было бы менее эффективным.