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

Запрет одного преобразования - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
thick_int
Заблокирован
16.02.2012, 01:06     Запрет одного преобразования #1
Есть ли в Visual C++ 2010 какая-нибудь возможность указать компилятору, что всякое неявное преобразование от числового типа в тип bool является ошибкой?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2012, 01:06     Запрет одного преобразования
Посмотрите здесь:

преобразования в Си... C++
Функции преобразования C++
C++ MinGW запрет неявного преобразования типов
Преобразования типов C++
Конструктор преобразования C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
16.02.2012, 16:25     Запрет одного преобразования #21
Цитата Сообщение от thick_int Посмотреть сообщение
А так просто уже ругается
переполнение фиксит же
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
thick_int
Заблокирован
16.02.2012, 17:47  [ТС]     Запрет одного преобразования #22
Цитата Сообщение от OstapBender Посмотреть сообщение
переполнение фиксит же
Тогда абсолютно нелогично выглядит допустимость вот такого кода
C#
1
2
float a = 2.0F, b = 3.0, c;
c = a + b;
То есть в целочиссленном случае она фиксит, а в вещественном уже по фигу.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
16.02.2012, 18:22     Запрет одного преобразования #23
Цитата Сообщение от thick_int Посмотреть сообщение
нелогично
Это с чего вдруг? В первом случае две переменные типа short при сложении дают int'овый результат, который присваивается переменной типа short. Приведение типа с потерей информации не допускается. Во втором случае как переменные были float, так после сложения и остаются. Никакого приведения не требуется.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
16.02.2012, 18:39     Запрет одного преобразования #24
да, там интересная ситуация, т.к для вещественных чисел компиль знает такое понятие как "бесконечность"

C#
1
2
3
4
5
            float f1 = float.MaxValue;
            float f2 = float.MaxValue;
            float f3 = f1 + f2;
 
            Console.Write("{0}\n{1}\n{2}\n", f1, f2, f3);
thick_int
Заблокирован
16.02.2012, 19:12  [ТС]     Запрет одного преобразования #25
Цитата Сообщение от silent_1991 Посмотреть сообщение
Это с чего вдруг? В первом случае две переменные типа short при сложении дают int'овый результат
Мне вообще кажется нелогичным именно то, что две переменные типа short дают при сложении тип int. Ведь в C++ это не так.
Где тут логика?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2012, 19:40     Запрет одного преобразования
Еще ссылки по теме:

Реализовать двусвязный список. В разных узлах одного списка может быть любой объект одного из допустимых типов (своих знаний не хватает) C++
C++ спецификаторы преобразования
C++ Преобразования текста

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.02.2012, 19:40     Запрет одного преобразования #26
Цитата Сообщение от thick_int Посмотреть сообщение
Мне вообще кажется нелогичным именно то, что две переменные типа short дают при сложении тип int.
корень сего лежит в ассемблере, где при сложении 2-х 32-х битных чисел часть результата помещается в 16-ть бит одного 32-х битного регистра, а остальная часть в 16 бит другого 32-х битного регистра, причина та же - избежание переполнения
Yandex
Объявления
16.02.2012, 19:40     Запрет одного преобразования
Ответ Создать тему
Опции темы

Текущее время: 05:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru