Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
#1

правило Константы слева - C++

17.12.2011, 16:21. Просмотров 1483. Ответов 22
Метки нет (Все метки)

Еще давно научили этому, чтобы писать в условиях сначала константу, а потом переменную которая проверяется. А сейчас рефакторил проект и возникла вопрос насколько широко это распространено? Помогает ли это, кроме случаев ероров на const = variable ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос правило Константы слева (C++):

Константы и C++ - C++
Скажите новичку зачем в C++ константы? И для чего они?

Составить правило - C++
как правильно составить условие для If выдать сообщения если введены не цифры

Не различает константы - C++
Добрый вечер. Есть константы в базовом классе:protected: ... // тут enum'ы и структуры const QString FORMAT_DIR = "format"; ...

Константы и указатели - C++
Как это работает? const int c = 2; const int* p1 = &c; int* p2 = (int*)p1; *p2 = 3; std::cout << c << " " << *p1 << " "...

Ввод константы - C++
Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб...

Указатели на константы - C++
Поясните. Запутался в нескольких примерах. С++ 11 стандарт. 1.int i=0, &r=i; auto a=r; const int ci=i,&cr=ci; auto b=ci; auto...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 16:27 #2
Цитата Сообщение от AC-93 Посмотреть сообщение
правило Константы справа
может слева?

p.s. впервые об этом правиле слышу)
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.12.2011, 16:33  [ТС] #3
Упс, да, слева
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.12.2011, 16:34 #4
Цитата Сообщение от sandye51 Посмотреть сообщение
впервые об этом правиле слышу)
например
C
1
if (NULL == (file = fopen(...)))
1
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.12.2011, 16:36  [ТС] #5
название темы теперь не поправить, чтобы слева было?

Добавлено через 1 минуту
Ну так кто как пишет? и например в
C
1
for(i = 0; i < n ; ++i) или for(i = 0; n > i ; ++i) n = const
Тема переименована
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.12.2011, 16:38 #6
Цитата Сообщение от AC-93 Посмотреть сообщение
например в
C
1
for(i = 0; i < n ; ++i)
C
1
 или for(i = 0; n > i ; ++i)
n = const
ИМХО здесь это только усложняет восприятие кода, а вот "одинарный" случай с if вполне удобен
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.12.2011, 16:41 #7
int const * const i = NULL;
вполне валидно, да
тут кому как больше нравится
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 16:46 #8
Jupiter, это понятно) просто не видел таких рекомендаций.
я вот наоборот константы всегда справа пишу)
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 16:49 #9
А теперь задачка на скорость сообразительности
C
1
2
3
4
5
6
7
void foo(const char **p) { }
void bar(char **p) { }
 
int main(int argc, char **argv) {
     bar(argv); // ok
     foo(argv); // warning
}
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.12.2011, 16:56  [ТС] #10
не должно быть варнинга.
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 17:06 #11
Цитата Сообщение от AC-93 Посмотреть сообщение
не должно быть варнинга
а он есть, сам ни раз сталкивался. Не понимаю почему..

например тут вообще ошибка. Почему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
class link
{
    int value;
    link *prev;
    link *next;
public:
    explicit link(int value) :
        value(value), prev(), next()
    {
    }
 
    link(int v, const link* pr, const link* nx) :
        value(v), prev(pr), next(nx)
    {
    }
 
    ~link()
    {
        delete prev;
        delete next;
    }
};
 
int main()
{
    link(1, new link(1), new link(2));
    return 0;
}
хотя сам уже допер почему)

а в предыдущем примере пока непонятно..)
0
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
17.12.2011, 17:08 #12
Цитата Сообщение от AC-93 Посмотреть сообщение
не должно быть варнинга.
ага, на самом деле там будет ошибка компилляции

Добавлено через 1 минуту
в си - варнинг,
в плюсах - ошибка компилляции
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 17:19 #13
Цитата Сообщение от AC-93 Посмотреть сообщение
не должно быть варнинга.
Должен быть. Проверьте, если хотите
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.12.2011, 18:55  [ТС] #14
Цитата Сообщение от fasked Посмотреть сообщение
Должен быть. Проверьте, если хотите
проверил, vs2008 варнинги 4 лвл,

C
1
2
3
Warning 1   warning C4100: 'p' : unreferenced formal parameter  x:\учебные\программирование 2011\1\1.c  1
Warning 2   warning C4100: 'p' : unreferenced formal parameter  x:\учебные\программирование 2011\1\1.c  2
Warning 3   warning C4100: 'argc' : unreferenced formal parameter   x:\учебные\программирование 2011\1\1.c  4
на 3 уровне их 0
0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.12.2011, 19:08 #15
AC-93, проверить не сложно.. а вот объяснение этому..)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 19:08
Привет! Вот еще темы с ответами:

встроенные константы в С++ (pi e) - C++
Подскажите, существуют ли в С++ встроенные константы. Например pi=3.14.... или e=2.71.... Если да, то как их вызвать. Если...

константы в классах - C++
в классе используется константа типа double. Как правильно задать ее? как static const double внутри класса или просто написать...

Указатели и константы - C++
Добрый вечер, будьте добры раскрыть смысл каждой из трех строк: const int* ptr; int* const ptr; int const* ptr;

Вычисляемые константы - C++
Можно ли сделать так, чтобы сначала вычислить, а затем сделать константой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.12.2011, 19:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru