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

Постфиксные и префиксные *менты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно переписать программы из паскаля на Си++ http://www.cyberforum.ru/cpp-beginners/thread593208.html
Программы из теории автоматов 1) Program Automat; Uses Crt; Var sym_term:array of string; sym_not_term:array of string; N,N0,N1:array of string; k,i:integer; {k - peremannaja cycle!!!!}
C++ здраствуйте.можете написать любую программу с защитой массива и пользовательским манипулятором подойдет любая..главное эти чтоб были. http://www.cyberforum.ru/cpp-beginners/thread593188.html
Измерение используемой памяти C++
Подскажите функцию в Windows в помощью которой можно измерить объем памяти используемой во время выполнения программы
Унаследованный деструктор C++
Если класс имеет родителя, у которого есть деструктор, то нужно ли в деструкторе класса вызывать родительский деструктор ? Пример: class A { private: char* str; public:
C++ Вычислить значение выражения http://www.cyberforum.ru/cpp-beginners/thread593166.html
Заменить в этой программе функцию на #include "stdafx.h" #include "conio.h" #include "stdlib.h" #include<iostream> #include <math.h> #define EPSILON 0.00001 using namespace std;
C++ Морской Бой, С++, консоль #include<iostream> #include <Windows.h> #include <conio.h> #include<ctime> //Макрос для режима установки кораблей "Игрок" #define Manual_a switch(k){\ case 'a':\ if(kj>1&&gamer==1){\ kj-=1;\ подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,639
Записей в блоге: 26
01.06.2012, 23:43     Постфиксные и префиксные *менты
Цитата Сообщение от The_Immortal Посмотреть сообщение
Использование подобных "сокращенных" вариантов действительно ли оптимизирует код, делает работу проги быстрее или без разницы?
По скорости разницы нет. Но иногда укорачивает исходный код программы и делает её более удобочитаемой и понятной

Цитата Сообщение от The_Immortal Посмотреть сообщение
Я просто где-то прочел, что это приветствуется в виду того, что время выполнения программы действительно становится меньше благодаря использованию таких штук
Лет 20-30 назад это действительно было так из-за того, что памяти на машинах было очень мало, а потому компиляторы были не достаточно эффективными. На современных машинах памяти выше крыши, процессоры быстрые, а потому современные компиляторы генерируют эффективный код хоть так, хоть эдак

Цитата Сообщение от The_Immortal Посмотреть сообщение
А в другой литературе прочитал, что это полный бред, что современные оптимизирующие компиляторы используют минимально необходимое кол-во инструкции машинного языка, независимо от применяемых для декремента/инкремента операторов
В части компиляторов они правы. В части того, что это бред - не совсем. Потому что если такое пишут в книге 30-летней давности, то это была правда (на момент написания книги)

Добавлено через 33 минуты

=====================================

taras atavin, "a += b" и "a = a + b" в общем виде НЕ являются эквивалентами

Следующие два кода отработают НЕ эквивалентно (и именно поэтому появилась операция +=)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int G;
 
int* get_ptr (void)
{
  printf ("aaa\n");
  return &G;
}
 
int main (void)
{
  *(get_ptr()) += 1;
  return 0;
}
и

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int G;
 
int* get_ptr (void)
{
  printf ("aaa\n");
  return &G;
}
 
int main (void)
{
  *(get_ptr()) = *(get_ptr()) + 1;
  return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru