LINUX.ORG.RU

История изменений

Исправление Crocodoom, (текущая версия) :

Такое ветвление сводится к комбинаторике из двух значений: true и false (т.е. N = 2) в степени количества ветвлений. Это худший случай. В процессе компилятор может еще довести, что некоторые выражения будут перманентно true или false. А также импликацию (зависимости) условий между собой.

Ещё раз. Ветвление идёт в динамике. Компилятору может казаться, что возможен случай, когда все ветви, которые содержат return, не выстрелят. Хотя в рантайме этого никогда не произойдёт, и всегда сработает хотя бы один return. Это может быть очевидно программисту, и совершенно не очевидно компилятору.

Исходная версия Crocodoom, :

Такое ветвление сводится к комбинаторике из двух значений: true и false (т.е. N = 2) в степени количества ветвлений. Это худший случай. В процессе компилятор может еще довести, что некоторые выражения будут перманентно true или false. А также импликацию (зависимости) условий между собой.

Ещё раз. Ветвление идёт в динамике. Компилятору может казаться, что возможен случай, когда все ветви, которые содержат return, не выстрелят. Хотя в рантайме этого никогда не произойдёт, и всегда сработает хотя бы один return. Это может быть очевидно программисту, и совершенно не очевидно компилятору.