Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
||||||||||||||||
1 | ||||||||||||||||
Баг или фича19.12.2012, 07:05. Просмотров 1954. Ответов 20
Метки нет Все метки)
(
решил проверить на своем VS 2008
присвоение в сравнении написал
написал так
написал так
уровень предупреждений Не по теме: хотел создать тему в экспертах, не получилось(хотя вопрос к экспертам) :(
0
|
|
19.12.2012, 07:05 | |
std::regex : баг на сайте или баг компилятора?
Баг компилятора или я дурак? Ошибка или баг в Dev C++? |
|
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
|
|
19.12.2012, 07:13 | 2 |
А что именно смущает? Последний пример?
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|
19.12.2012, 07:34 [ТС] | 3 |
смущает то что в if идет сравнение (==) и если написать присвоение(=)
компилятор должен заверещать "обрати внимание не ошибся ли ты" но при этом код скомпилировать а это молчит как партизан
0
|
3239 / 2047 / 350
Регистрация: 24.11.2012
Сообщений: 4,897
|
|||||||||||
19.12.2012, 07:42 | 4 | ||||||||||
А почему он должен предупреждать о подобном? Использование присваивания в условии - обычная практика.
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
||||||||||||||||||||||||||
19.12.2012, 07:49 [ТС] | 5 | |||||||||||||||||||||||||
вот как например ведет себя CodeVisionAVR
я что то говорил об ошибке(Error) ? я говорил о предупреждении (Warning) потому что вместо
0
|
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
|
|
19.12.2012, 07:51 | 6 |
Ну вобще то я думаю известно, что в выражении условия if не обязательно должно быть логическое выражение. Все что == 0 false, все остальное true. Ругаться компилятор не должен, на то что вы используете присваивание. Ведь результатом выражения в if будет(в вашем случае) какой то адрес, а это я так думаю true. Никакой фантастики.
P.S. Просто так придуман язык С, что можно выстрелить нечаяно себе в ногу
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|||||||||||
19.12.2012, 08:01 [ТС] | 8 | ||||||||||
Schizorb,
вот на это вякнул
Добавлено через 3 минуты спасибо что объяснил ![]() я то за пятнадцать лет работы с языком, об этом даже не догадывался ![]() речь идет о конкретной среде VS 2008, все остальные(что у меня есть) ведут себя адекватно Не по теме: почему и не хотел создавать тему в начинающих
0
|
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
|
||||||
19.12.2012, 08:11 | 9 | |||||
Просто изначально неясно было О ЧЕМ ЖЕ ВСЕ ТАКИ ВОПРОС))) Ответил то что думал.
Теперь понял вопрос конкретнее) Ну а в чем проблема то, что он выдает предупреждение? Просто компания microsoft пытается сделать так, чтобы программист допускал меньше ошибок при написании кода, для последующей простоты отладки. Вот и сделала компилятор с логикой Например VS 2012 на
Предупреждение warning C4553: ==: оператор не имеет результата; возможно, имелся в виду "=" Что и логично)))
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|||||||||||
19.12.2012, 08:21 [ТС] | 10 | ||||||||||
ага а это вот не ошибка?
очень информативно ![]() оператор == как раз имеет результат просто мы его потеряли вот так ведь вопросов не возникает
0
|
19.12.2012, 08:31 | 11 |
ValeryS, оно?
http://msdn.microsoft.com/en-u... s.80).aspx Там по идее level 4 указан. Добавлено через 2 минуты Но это же не ошибка. Можно писать что-нибудь типа: x + y; Результат теряется, но никто не говорил, что присваивание в выражении обязательно)
1
|
56 / 17 / 1
Регистрация: 14.05.2012
Сообщений: 134
|
|
19.12.2012, 08:33 | 12 |
ValeryS, не понятно что же все таки Вас не устраивает? Вы пытаетесь доказать что C++ несовершенен?) Или сообщить о несовершенстве компилятора? Или Вы просто пытаетесь понять почему же все таки всплывает это предупреждение?
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|||||||||||
19.12.2012, 08:50 [ТС] | 13 | ||||||||||
да
но четвертый уровень он же параноидальный бывает что на свои собственные библиотеки ругается с точки зрения языка конечно не ошибка, а с точки зрения алгоритма ![]() Добавлено через 7 минут изначально то хотел проверить что вот это
а вот это вот
и это мне мог дать только 4 уровень
0
|
19.12.2012, 08:56 | 14 |
Видимо, поэтому и не ошибка, а именно предупреждение, причем первого уровня. http://msdn.microsoft.com/en-u... s.80).aspx
Почему assignment in condition четвертого уровня, вопрос к разработчикам студии, наверное...
0
|
Don't worry, be happy
|
||||||
19.12.2012, 10:29 | 15 | |||||
Это абсолютно лекальная инструкция по мнению компилятора и предупреждать о ней нет необходимости, ибо тогда
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|
19.12.2012, 11:25 [ТС] | 16 |
хорошо тогда почему CodeVisionAVR
выдает здесь я погорячился насчет ошибки действительно с точки зрения языка все нормально
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
19.12.2012, 11:28 | 17 |
0
|
В астрале
![]() 8029 / 4786 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
|
||||||||||||||||
19.12.2012, 11:38 | 18 | |||||||||||||||
Ах ну да. Выше было же уже. Тогда
0
|
Модератор
![]() 8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
|
|
19.12.2012, 11:43 [ТС] | 19 |
это я должен на каждого разработчика оглядываться
есть как выяснилось 4 уровень но все таки стандарт регламентирует поведение компилятора при присвоении в if или нет?
0
|
В астрале
![]() 8029 / 4786 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
|
|
19.12.2012, 11:45 | 20 |
ValeryS, Стандарт вообще не регламинтирует warning-и. Если это не ошибка однозначно - значит не регламентировано.
1
|
19.12.2012, 11:45 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Баг компилятора? Или я чего то не догоняю? Ввод/вывод баг или нет?
помогите определить баг или недочёт в программе. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |