Полезные советы программистам
Используйте + + и – –
Попробуйте, по возможности, использовать только унарные операторы инкремента и декремента, они производят меньшее количество инструкций и работают быстрее.
Обмен значений переменных
Обменять значения двух переменных без использования третей можно так:
void swap(int& a, int& b){
a ^= b;
b ^= a;
a ^= b;
}
Предупреждение: это не будет работать, если «a» и «b» указывают на одну и ту же переменную!
int a = 111;
int*b = &a;
swap(a, *b);
printf("a=%i;b=%i;", a, *b);
В этом случае обе будут сброшены к 0 после выполнения swap(a, b).
Округление до целого
Integer = Float + 0.5
Примечание: Это работает почти на всех языках программирования.
Пример:
In -> Out
1,1 -> 1
1,5 -> 2
1,7 -> 2
1 -> 1
Массив, переполнение буфера
Если скопировать или вставить данные в массив больше его размера, произойдет переполнения массива.
Посмотрите на следующий код:
char var1[10];
char var2[7] = "bhushana"; /* '\0' не добавили */
strcpy(var1, var2);
Здесь мы можем видеть, что var2 ( "bhushana") не заканчивается терминальным Null ( '\0'). Поэтому, когда мы копируем var2 в var1 с помощью strcpy(), фунция будут копировать все символы var2, пока не найдет '\0' в памяти. Такое действие может привести к переполнению буфера!
Инициализируюте все переменные
Помните о необходимости инициализации их в декларации:
int counter = 0;
char strings[MAX] = '\0';
memset(&structX,0,sizeof(structX));
char *cp = NULL;
Освобождайте память, которую используете
bool function_t(int Val)
{
char * msg = new char [30];
// делаем что-то
if (Val == 0)
{
// не только return!
delete [] msg;
return false;
}
// и тут делаем что-то
delete [] msg;
return true;
}
Ошибки деления
Посмотрите на программу:
void main()
{
float ans;
ans = 5 / 10;
printf("%f", ans);
}
Что выведет на экран?
Не: 0,50000
Выведет 0.000000
Потому что Integer / Integer = Integer
Оптимизация циклов
Если порядок итераций в цикле не имеет значения, и вы начинаете с нуля, то замените:
for (i = 0; i<max; i + +){
list [i] = 0;
}
на:
for (i = max, i--) {
list [I] = 0;
}
Так будет немного быстрее.
Комментарии
Отправить комментарий