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

Почему не проверяется условие else if - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Application has failed to start because the application configuration is incorrect (+LNK4099, 4098) http://www.cyberforum.ru/cpp-beginners/thread1237164.html
Получил тестовое задание на джуна C++. Проект - Недоделанный арканоид на собственном движке конторы. Моя задача допилить игру. В задании 2 варианта solution'ов: под MS Visual Studio 2008 и под VS2010. (быть может это имеет значение - из этого предполагаю, что делался проект на VS2008, а к VS2010 уже адаптировали). Проект билдится, хотя и с 400+ warning'ами, большая часть из которых LNK4099...
C++ Множественное наследование - когда оно действительно нужно? Здравствуйте! До изучения языка C++ я программировал на языках типа Java и C#, где множественное наследование от классов явно запрещено. Долгое время после я обходился без этой возможности. Много тем в учебниках, где обсуждалось множественное наследование, были сопровождены примерами, но мне всегда казалось, что это можно выстроить гораздо красивее и логичней, совершенно не используя... http://www.cyberforum.ru/cpp-beginners/thread1237158.html
C++ Сортировка книг по убыванию года изнания
2) Написать программу сортировки книг в массиве структур по убыванию года издания
Скопировать одну структуру в другую C++
1) Написать программу копирования одной структуры (с информацией о книге) в другую
C++ Получить данные о службах Windows с возможностью управления ими http://www.cyberforum.ru/cpp-beginners/thread1237132.html
Всем привет! я новичок в программировании. Подскажите получить данные о службе, сколько берет оперативной памяти, запущена или нет. И возможность запустить ее или перезагрузить.
C++ Создание VPN сети, RAS API Здравствуйте, я создал небольшой чат, основанный на сокетах. Чтобы клиент подключился к серверу с другого ПК требуется VPN. Хотелось бы попробовать написать клиент для подключения к VPN сети, а еще лучше и сервер VPN к этому всему. Проблема в том, что не знаю с чего начать. Краем уха слышал про RAS API, однако толком разобраться не смог. С чего начать? Посоветуйте пожалуйста или киньте пару... подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16933 / 5338 / 328
Регистрация: 30.03.2009
Сообщений: 14,339
Записей в блоге: 26
02.08.2014, 15:42     Почему не проверяется условие else if
Забыл написать, что бывают случаи, когда внутри условия действительно пишут присваивание, а не сравнение. Казалось бы, что такие коды лучше переписать. Т.е. для if'а вместо

C
if (x=a)
лучше написать

C
x = a;
if (x)
Но в сложных случаях такую замену написать нетривиально:

C
if ((x = func1() && func2(x) < 10)
    || (y = func3() && func4(y) < 10))
или

C
while (x = func())
Другими словами, существуют реально востребованные случаи, когда внутри условия действительно было бы эффективным написать оператор присваивания. А потому выдача предупреждения со стороны компилятора является избыточной. По негласному соглашению в таких случаях обычно экранируют присваивание дополнительной парой скобок, чтобы компилятор различал случаи, в которых действительно не надо выдавать предупреждение

C
if (x = a) /* предупреждение есть */
if ((x = a)) /* предупреждения нет */
Добавлено через 5 минут
Цитата Сообщение от intern Посмотреть сообщение
Как по мне, то вместо
C++
1
if (D==0)
проще использовать
C++
1
if (!D)
Вопрос исключительно религиозный.

В таких случаях я руководствуюсь следующей логикой. Если D имеет по смыслу булевский тип (т.е. 0 = нет, остальное = да), то пишу if (!D). Если D имеет целочисленный тип, то пишу if (D == 0). При таком подходе меньше возникает пониманий со сложными конструкциями

C
if (is_a_ok && !is_b_ok && (is_c_ok || is_d_ok))
понимать проще, чем

C
if (is_a_ok == true && is_b_ok == false && (is_c_ok == true || is_d_ok == true))
Точно так же код

C
if (a == 0 && b != 0 && (c == 0 || d == 0))
понимать проще, чем

C
if (a && !b && (!c || !d))
 
Текущее время: 09:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru