Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 6
1

Автоматическое понижающее преобразование типа

21.08.2015, 22:09. Просмотров 1014. Ответов 6
Метки нет (Все метки)

Не пойму почему так происходит. Компилировал в Code Blocks с MinGW.
Переменная типа long без всяких предупрежнений присваивается к переменной типа short.
C++
1
2
3
4
5
int main(){
  short a=3;
  long b=10;
  a=b;
}
Как добится что б хотяб какое то предупреждение выдавал по этому поводу?
Жалуется что переменная а не используется а на возможную потерю данных даже не заикается.
Тот же пример в Microsoft Visual Studio выдает предупреждение "warning C4244: '=': conversion from 'long' to 'short', possible loss of data"

Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2015, 22:09
Ответы с готовыми решениями:

Преобразование типа или преобразование типа указателя ?
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write ((char *) &n, sizeof...

Автоматическое преобразование стандартных типов
Если моя функция LOG принимает qString* можно ли сделать так чтобы автоматически вызывалась...

Автоматическое преобразование китайского кода в нормальный
У меня есть огромный шмат кода примерно такого вида: if (x < 10 && y > 0 && z != 0) return 1;...

Почему не происходит автоматическое преобразование стандартных типов?
Имеется следующий код : int a = 10; cout<<a/100<<endl; Вариант из явным преобразованием...

6
6908 / 5973 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
21.08.2015, 22:29 2
Ну это же не ошибка.
0
842 / 773 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
21.08.2015, 22:31 3
Цитата Сообщение от Piratic Посмотреть сообщение
Как добится что б хотяб какое то предупреждение выдавал по этому поводу?
Максимальный уровень предупреждений поставить. Если там есть такой, канеш.
0
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 6
22.08.2015, 00:17  [ТС] 4
Конечно не ошибка.
Хотелось бы предупреждение получить как это делает Visual Studio.
Насчет максимального уровня предупреждений как раз вопрос и был. Я такой опции там не нашел.
Поэтому тут и спросил.
0
12 / 12 / 8
Регистрация: 12.08.2015
Сообщений: 55
22.08.2015, 00:37 5
Лучший ответ Сообщение было отмечено Piratic как решение

Решение

Сижу на Линукси использую компилятор Geany, скомпилил твой код не получил варнинга хоть был -Wall , порылся тут https://gcc.gnu.org/onlinedocs... gcc_2.html и нашел вот это -Wconversion , просто добавь в команды сборки и получишь нужный варнинг )))
s:3:13: warning: conversion to ‘short int’ from ‘long int’ may alter its value [-Wconversion]

P.S. хз как в код болксе но у меня на панели сверху есть кнопочка команды сборки туда пишу и всё, ну или с этим в терминале скомпилить)
1
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 6
22.08.2015, 01:50  [ТС] 6
Спасибо помогло.
Кто пользует CodeBlocks нужно прописать в Settings->Compiler->и там уже язычек Other options
-std=c99 -это я раньше для других вещей писал
-Wconversion -это довавил по вашему совету.
Жаль что по умолчанию не включена эта опция.

Вопрос закрыт.
0
13471 / 7134 / 1712
Регистрация: 30.01.2014
Сообщений: 11,919
22.08.2015, 23:06 7
Piratic, включай
-Wall -Wextra
-Wconversion в числе прочих входит в -Wextra
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2015, 23:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Автоматическое выведение типа
Привет всем. Помогите довести код до ума, никак не могу реализовать следующую идею: в параметре...

Автоматическое выведение типа
У С. Прата встретил вот такой непонятный код const double *f2(const double arr, int n) { ...

Автоматическое объявление объекта произвольного типа
Помогите найти информацию по "Автоматическому объявлению объекта произвольного типа". Что это...

Преобразование типа
class ne { public: ne(); ~ne(); double x1; char l; }; ne O; ne::~ne(){};


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

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

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