То, что сделать о неправильном “управлении, достигает конца непустой функции” gcc предупреждение?

  • Чтобы решить эту проблему, вам нужно установить accept-charset = "UTF-8" в теге form , потому что Jetty использует UTF-8 для декодирования запроса.
6
задан 18 January 2009 в 15:51
поделиться

4 ответа

Если бы Вы не хотите "еще" добавлять пункты, потому что они сделали бы код дольше, то, возможно, требуется удалить финал, "если" и делают код короче:

int sign(int i) {
    if(i > 0) return 1;
    if(i == 0) return 0;    
    return -1; // i<0
}

Или если Вы действительно вычисляете, "подписываются", и это не упрощение некоторого более длительного примера:

int sign(int i) {
    return (i>0) ? 1 : ((i<0)?-1:0);
}
17
ответ дан 8 December 2019 в 02:30
поделиться

В этом случае я пошел бы для решения:

int sign(int i)
{
    if (i > 0)
        return 1;
    else if (i == 0)
        return 0;    
    else
        return -1; // i<0
}

Таким образом, я добавил бы два выражения else - для создания кода более симметричным, а не потому что это имеет любое значение к сгенерированному объектному коду.

Я сделал некоторое экспериментирование. Я ожидал короткую версию с помощью тернарный оператор дважды, чтобы сгенерировать тот же код как дольше. Однако тестирование на Солярисе 10 (SPARC) с GCC v4.3.2 показывает, что версия тернарного оператора последовательно на 12-16 байтов меньше, чем 'если' версия. Однако присутствие или отсутствие дополнительного еще не имеют никакого значения. (Добавляющий регистр не сделал разногласий, как я буду ожидать.) Добавленный я также посмотрел на решение Christoph с 'возвратом (i> 0) - (я <0)'; - вариант я не видел прежде. Размеры кода были:

       Unoptimized     Optimized (-O5)
 if      166             110
 ?:      150              98
 >-<     122              98

Который главным образом идет, чтобы показать, что измерение является хорошей идеей!

5
ответ дан 8 December 2019 в 02:30
поделиться

Ваш sign() функция не очень эффективна. Попробуйте это

int sign(int i) {
    return (i > 0) - (i < 0);
}

Источник: взломы битового жонглирования

11
ответ дан 8 December 2019 в 02:30
поделиться

else пункты не являются "помехой", они - более очевидный способ заявить Ваше намерение.

3
ответ дан 8 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: