Делает ли оператор запятой код медленнее? - PullRequest
0 голосов
/ 07 июня 2018

Я очень часто использую оператор запятой (в C) при решении задач на таких сайтах, как CodeForces .и я заметил, что моим решениям, по-видимому, требуется больше времени выполнения, чем большинству других решений, хотя различий нет.?например, если оценка двух его операндов не нужна.Было бы быстрее разделить их на два утверждения?Или компилятор все равно его оптимизирует?

1 Ответ

0 голосов
/ 07 июня 2018

Нет.Оператор запятой не делает код медленнее.

Тем не менее, оператор запятой редко встречается в большинстве кода.Практически единственный раз, когда вам нужно, это когда вы запускаете цикл for над двумя переменными, как в

for(i = 0, j = n; i < j; i++, j--)

(я полагаю, что есть C-подобные языки, которые допускают оператор запятой только впервое и третье выражение цикла for, запрещающее его везде.)

В любое другое время, когда вы используете оператор запятой, обычно это означает, что вы делаете что-то «умное», но ненужное, чтоглавным образом служит для того, чтобы сделать ваш код более запутанным или трудным для чтения.

(Тем не менее, верно и то, что большинство запятых в большинстве программ на C не являются операторами запятых. Запятые, разделяющие аргументы в функциивызовы не являются операторами запятых и не являются запятыми, разделяющими несколько объявлений, таких как int i, j;.)

...