Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
1

Условные операторы

29.08.2019, 18:17. Показов 1688. Ответов 32
Метки нет (Все метки)

Что лучше или оптимизированите, вобщем, как писать?


C++
1
2
3
4
if (i <=5)
 {
 
 }
или

C++
1
2
3
4
if (i < 6)
 {
 
 }
?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2019, 18:17
Ответы с готовыми решениями:

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки...

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

«Языки и технологии программирования» «Операторы цикла. Условные операторы»
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно....

Условные операторы.Операторы цикла
1)По номеру y(y&gt;0) некоторого года определить с-номер его столетия(учесть что к примеру началом 20...

32
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 18:35 2
В общем ввиде разницы нет. Компиляторы они тоже нетупые и умеют оптимизировать программу. Может можно как-то оптимизировать, но это надо смотреть конкретную программу и знать язые ассемблера.
0
С чаем беда...
Эксперт CЭксперт С++
9145 / 4664 / 1268
Регистрация: 18.10.2014
Сообщений: 10,517
29.08.2019, 18:41 3
Цитата Сообщение от Darkfor Посмотреть сообщение
Что лучше или оптимизированите, вобщем, как писать?
В общем случае ваши варианты ведут себя по по-разному. О чем тогда вопрос?
0
Нарушитель
1486 / 1288 / 485
Регистрация: 16.08.2014
Сообщений: 5,415
Записей в блоге: 1
29.08.2019, 18:47 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
О чем тогда вопрос?
я думаю вопрос в том что, если i = 5, какой if эффективней отработает?

Добавлено через 1 минуту
в первом два сравнения во втором одно.
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 18:52 5
Хотя я чуть-чуть ошибся.
Код :
C++
1
2
3
4
if (i < 6)
 {
 
 }
Чуть-чуть быстрее, но это очень не большая разница. Опять же надо смотреть конкретны пример программы.
0
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
29.08.2019, 18:55  [ТС] 6
В какмом смысле "По разному"? Они оба отбирают числа не больше пяти. Что тут разного? Я иммею ввиду, что будет оптимизированнее. Не ужели такой сложный вопрос. Мне вот понятно, что в первом варианте на 1 символ больше, значит это занимает больше памяти, и на низком уровне по идее на обработку первого варивнта уйдёт больше времени. Значит второй вариант лучше, и оптимизирование. Поправьте моё предположение.
0
Нарушитель
1486 / 1288 / 485
Регистрация: 16.08.2014
Сообщений: 5,415
Записей в блоге: 1
29.08.2019, 18:59 7
Цитата Сообщение от MrxCWco Посмотреть сообщение
Чуть-чуть быстрее,
от компилятора зависит все же. мне кажется стандарт такие вещи не оговаривает.
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 19:26 8
"Они оба отбирают числа не больше пяти."
Да, они отбирают числа не больше пяти.
Но, делают они это чуть-чуть по-разному, но результат будет один и тот же.

"Что тут разного?"
Чтобы объяснить это по-настоящему, надо знать язык ассемблера.

"Не ужели такой сложный вопрос."
Вопрос несложные для тех, кто знает язык ассемблера.

"Мне вот понятно, что в первом варианте на 1 символ больше, значит это занимает больше памяти, и на низком уровне по идее на обработку первого варивнта уйдёт больше времени."
Нет, память будет потрачено столько же сколько и в первом варианте.

Дело в том, что на уровне машинных кодов, команды сравнения(сердце данных примеров) чисел будут разные, и второй вариант будет работать чуть-чуть быстрее именно на уровне процессора, но это очень малькая разница во времени особенно с учётом современных процессоров.

Добавлено через 2 минуты
Цитата Сообщение от _stanislav Посмотреть сообщение
от компилятора зависит все же. мне кажется стандарт такие вещи не оговаривает.
Согласен, но компиляторы не такие тупые, они стараются оптимизировать код. И ключевая разница данных примеров только в одной машинной команде.Я скомпилировал данные примеры. И диссамблировал код. Это код эквивалентетен двум командам машинного кода. У счётом моего знания языка ассемблера, скажу, что оптимизировать ещё проще нельзя. Я имею ввиду само сравнение, а не то, что в скобка.
0
Модератор
1638 / 1092 / 487
Регистрация: 17.07.2012
Сообщений: 5,344
29.08.2019, 19:28 9
Цитата Сообщение от Darkfor Посмотреть сообщение
Что тут разного?
Если i типа double / float то это разные совсем условия.
0
С чаем беда...
Эксперт CЭксперт С++
9145 / 4664 / 1268
Регистрация: 18.10.2014
Сообщений: 10,517
29.08.2019, 19:58 10
Цитата Сообщение от Darkfor Посмотреть сообщение
В какмом смысле "По разному"? Они оба отбирают числа не больше пяти. Что тут разного?
Смотрим сюда

C++
1
2
3
4
5
6
7
double i = 5.5;
 
if (i <= 5)
  std::cout << 1 << std::endl;
 
if (i < 6)
  std::cout << 2 << std::endl;
Пробуем, если "на глаз" не ясно. Теперь понятно, что "по-разному"?

Еще раз: вопрос поставлен бессмысленно. Это исчерпывающий ответ на такой вопрос.
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 20:03 11
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Смотрим сюда

C++
1
2
3
4
5
6
7
double i = 5.5;
 
if (i <= 5)
  std::cout << 1 << std::endl;
 
if (i < 6)
  std::cout << 2 << std::endl;
Пробуем, если "на глаз" не ясно. Теперь понятно, что "по-разному"?

Еще раз: вопрос поставлен бессмысленно. Это исчерпывающий ответ на такой вопрос.
Эти примеры разные на уровне машинных кодов.
0
С чаем беда...
Эксперт CЭксперт С++
9145 / 4664 / 1268
Регистрация: 18.10.2014
Сообщений: 10,517
29.08.2019, 20:08 12
Цитата Сообщение от MrxCWco Посмотреть сообщение
Эти примеры разные на уровне машинных кодов.
Не понял. К чему здесь это? Разумеется, они разные. Ни о какой "одинаковости на уровне машинных кодов" речи и не идет вообще.
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 20:12 13
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не понял. К чему здесь это? Разумеется, они разные. Ни о какой "одинаковости на уровне машинных кодов" речи и не идет вообще.
К тому, что код:
C++
1
2
3
4
if (i < 6)
 {
 
 }
Чуть-чуть быстрее.
0
С чаем беда...
Эксперт CЭксперт С++
9145 / 4664 / 1268
Регистрация: 18.10.2014
Сообщений: 10,517
29.08.2019, 20:26 14
Цитата Сообщение от MrxCWco Посмотреть сообщение
К тому, что код:
C++
1
2
3
4
if (i < 6)
 {
 
 }
Чуть-чуть быстрее.
Нет, разумеется. Нет смысла обсуждать код вне конкретной платформы, но в то же время практически на всех существующих платформах оба варианта строго идентичны по производительности, даже если они не являются эквивалентными.

Цитата Сообщение от MrxCWco Посмотреть сообщение
Дело в том, что на уровне машинных кодов, команды сравнения(сердце данных примеров) чисел будут разные, и второй вариант будет работать чуть-чуть быстрее именно на уровне процессора, но это очень малькая разница во времени особенно с учётом современных процессоров.
Откуда вы такое взяли - совершенно не ясно. Нет.
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
29.08.2019, 20:39 15
TheCalligrapher, разве в случае с double как в Вашем примере второй вариант
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
C++
1
2
3
if (i < 6)
 {
}
C++
1
 
не должен работать чуть-чуть дольше первого?
Цитата Сообщение от MrxCWco Посмотреть сообщение
C++
1
if (i <= 5)
0
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
29.08.2019, 20:43  [ТС] 16
Хватит говорить про double и float. Я имел ввиду именно int.
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
29.08.2019, 20:48 17
Darkfor, Вы же не указали что речь идет именно об int,да и как по мне разницы нету,в первом варианте проверяются числа от 0 до 5,во втором от 0 до 5.999999... .
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 20:53 18
Цитата Сообщение от ReYalp Посмотреть сообщение
TheCalligrapher, разве в случае с double как в Вашем примере второй вариант

[/CPP]
не должен работать чуть-чуть дольше первого?
[/CPP]
На уровне машинных кодов чуть-чуть дольше, но это не заметно.

Добавлено через 3 минуты
Цитата Сообщение от Darkfor Посмотреть сообщение
Хватит говорить про double и float. Я имел ввиду именно int.
Если про int, то польза у код
C++
1
2
3
4
if (i < 6)
 {
 
 }
Именно на уровне языка ассемблера.
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
29.08.2019, 20:56 19
Цитата Сообщение от MrxCWco Посмотреть сообщение
Если про int, то польза у код
почему польза у int?
0
6 / 3 / 3
Регистрация: 15.07.2018
Сообщений: 32
29.08.2019, 21:01 20
Цитата Сообщение от ReYalp Посмотреть сообщение
почему польза у int?
Я имел ввиду, что код
C++
1
2
3
if (i < 6)
{
}
быстрее на доли секунды кода:
C++
1
2
3
4
if (i < 6)
{
 
}
Если хочешь могу объяснить почему, только навряд ли ты меня поймёшь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2019, 21:01

условные операторы
для заданых a,x написать программу для определения значений функции ...

Условные операторы с++
Доброго времени программисты, ищу спасения на вашем портале! Писал программу: Вывести на экран...

Условные операторы
Задание: создайте условный оператор, который присваивал бы x*y для четного x, в противном случае...

Условные операторы
Напечатать таблицу значений функций y=sqr(x)+4x на интервале от -5 до 5.

Условные операторы
Написать программу, которая вычисляет дату следующего дня. Ниже представлен рекомендуемый вид...

Условные операторы
Помогите расшифровать это на обычные if и else. int curLen = i == 0 ? mas.len : mas.len - mas.len;


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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