Среда, 26 Февраля 2020, 16:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Приемлемое преобразование отсутствует (Вопросик)
Приемлемое преобразование отсутствует
LabirintikДата: Суббота, 16 Августа 2014, 17:40 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
У меня вопрос, почему это:
Код
#include <iostream>
#include <conio.h>
using namespace std;
bool virus;
void main()
{
   virus = false;
   cout << virus==(true==false);
   getch();
}

Вызывает false, ведь virus это false, а true==false, тоже лож, значит должно быть true, точнее почему выходит 0, ведь 0 это false ?


Сообщение отредактировал Labirintik - Суббота, 16 Августа 2014, 17:42
wcptДата: Суббота, 16 Августа 2014, 21:57 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
а мне интересно, как ты это скомпилировал.

Добавлено (16.08.2014, 21:57)
---------------------------------------------
попробуй предположить, что будет напечатано. Не пробуй запускать, а сначала предположи. На заметочку, msvc такое не пропускает.

Код

#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
         srand(time(0));
         int h=rand()%100;
         cout << h==(true==false);
         getch();
         return 0;
}



Сообщение отредактировал wcpt - Суббота, 16 Августа 2014, 22:03
LabirintikДата: Суббота, 16 Августа 2014, 22:59 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Цитата wcpt ()
а мне интересно, как ты это скомпилировал.

Всё спокойно скомплировалась через Visual studio 2010 C++(у меня две Visual'ки одна 2010, другая 2013)

Добавлено (16.08.2014, 22:59)
---------------------------------------------

Цитата wcpt ()
На заметочку, msvc такое не пропускает.

В первых спокойно запустилось smile
в вторых значение h
wcptДата: Суббота, 16 Августа 2014, 23:05 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
а ты хотя бы понял, в чем ошибка то?


Сообщение отредактировал wcpt - Суббота, 16 Августа 2014, 23:09
LabirintikДата: Суббота, 16 Августа 2014, 23:11 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Цитата wcpt ()
а вот у меня нет. Ошибка ожидаемая:
error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "std::basic_ostream<char,std::char_traits<char>>" (или приемлемое преобразование отсутствует)

Держи скрин:


Сообщение отредактировал Labirintik - Суббота, 16 Августа 2014, 23:11
wcptДата: Суббота, 16 Августа 2014, 23:22 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
лови:
LabirintikДата: Суббота, 16 Августа 2014, 23:25 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Цитата wcpt ()
лови:

Я уже проверил, это проблема в разницы VS
VS 2010 такой код переваривает, а 2013 уже нет
wcptДата: Суббота, 16 Августа 2014, 23:26 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
вот-вот. А знаешь, почему?

Сообщение отредактировал wcpt - Суббота, 16 Августа 2014, 23:26
LabirintikДата: Суббота, 16 Августа 2014, 23:29 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата wcpt ()
вот-вот. А знаешь, почему?

Потому что это не код, а бред?
wcptДата: Суббота, 16 Августа 2014, 23:32 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
потому что приоритет операций. Для верного результата:
Код
cout << (h==(true==false));         

кстати, интуиция подсказывает, что если бы там было не true==false а true== какая либо переменная, то и в msvc `10 такое бы не прокатило. Догадка, не более smile


Сообщение отредактировал wcpt - Суббота, 16 Августа 2014, 23:34
LabirintikДата: Суббота, 16 Августа 2014, 23:42 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Цитата wcpt ()

кстати, интуиция подсказывает, что если бы там было не true==false а true== какая либо переменная, то и в msvc `10 такое бы не прокатило. Догадка, не более smile

проверим smile

Добавлено (16.08.2014, 23:42)
---------------------------------------------
Угадал

wcptДата: Суббота, 16 Августа 2014, 23:47 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата Labirintik ()
Угадал
списать результат можно на "оптимизации" компилятора при встрече с константным выражением (true==false) smile


Сообщение отредактировал wcpt - Суббота, 16 Августа 2014, 23:48
Форум игроделов » Программирование » C/C++ » Приемлемое преобразование отсутствует (Вопросик)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг