Полезные советы программистам

Используйте + + и
Попробуйте, по возможности, использовать только унарные операторы инкремента и декремента, они производят меньшее количество инструкций и работают быстрее.
Обмен значений переменных
Обменять значения двух переменных без использования третей можно так:

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;
}

Так будет немного быстрее.


Комментарии

Популярные сообщения из этого блога

Как включить звук в безопасном режиме?

Как создать учетную запись BAIDU за пределами Китая без китайского номера телефона 2022