11 / 8 / 3
Регистрация: 14.07.2015
Сообщений: 284
|
||||||||||||||||
1 | ||||||||||||||||
Почему case работает только с выражениями, и не работает с функциями?30.03.2016, 19:14. Показов 1419. Ответов 12
и как быть например если хочу действовоть в зависимоти от результатов вызова функции
и не работает с перемеными и не работает с "+" "-"
Добавлено через 42 секунды каковы альтернативы?
0
|
30.03.2016, 19:14 | |
Ответы с готовыми решениями:
12
Ноутбук работает только с Wi Fi роутера дома, в кафе не работает и везде. Почему? почему не работает case? Почему не работает case? Почему case не работает со строками? |
Супер-модератор
|
||||||
30.03.2016, 19:18 | 2 | |||||
Чего это "не работает"? Нормально все работает:
и с переменными работает. И с выражениями. Больше кода показывай. По огрызкам, которые ты приводишь, ничего не понять.
1
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
|
30.03.2016, 19:19 | 3 |
Case работает не с функцией, а с ее результатом.
Если она возвращает значение ординального типа - проблем не будет. С неординалом этот оператор не работает. Ординалы: Целое, Логическое, Символ, Перечислимый тип. Другие типы с Case не будут работать.
1
|
11 / 8 / 3
Регистрация: 14.07.2015
Сообщений: 284
|
|||||||||||
30.03.2016, 19:25 [ТС] | 5 | ||||||||||
да я не правильно выразился
0
|
Супер-модератор
|
|
30.03.2016, 19:29 | 6 |
Сообщение было отмечено ПраПрапорщик как решение
Решение
Вот тут я с компилятором согласен полностью. Все
метки , на которые может осуществиться переход, должны быть известны на этапе компиляции , так что там могут быть только константы. Если значения станут известны только в рантайме - прямая дорога к использованию if.
1
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 37
|
||||||
30.03.2016, 19:53 | 7 | |||||
Не знаю про что вы, но все равно напишу
Не по теме: Про это ли я подумал
0
|
11 / 8 / 3
Регистрация: 14.07.2015
Сообщений: 284
|
|||||||||||
30.03.2016, 20:38 [ТС] | 8 | ||||||||||
пробовал не прокатывает
и? Ошибку выдает? Добавлено через 37 минут volvo, более того
В чем разница между записями i1 = 3 и i2: integer = 3;? Добавлено через 2 минуты Это читал не объясняют
0
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
|
30.03.2016, 21:05 | 9 |
http://www.borlpasc.narod.ru/refer/2/tipiz.htm
Грубо говоря: i1 = 3; - Это чистая константа, и может быть использована в выборе Case, ибо вычисляется на этапе компиляции i2: integer = 3; - Это переменная, и на этапе компиляции ее значение считается неопределенным, хоть и заданным изначально. Т.е. эта форма может быть изменена в ходе работы программы, а изменяемые значения в Case подставляться не могут. Вообще зачем тебе Case понадобился? Почему именно его?
2
|
11 / 8 / 3
Регистрация: 14.07.2015
Сообщений: 284
|
|||||||||||
30.03.2016, 21:18 [ТС] | 10 | ||||||||||
А что еще? У меня два числа DWORD означающих русскую и англ раскладки:
68748313 и 67699721. Если я объявлю их вначале программы как константы RU и EN, мне легче писать
Ладно если это надо испольщовать один раз. но каждый раз вспоминать эти числа или идти вверх и копировать
0
|
0 / 0 / 0
Регистрация: 27.03.2016
Сообщений: 37
|
|
30.03.2016, 21:21 | 11 |
0
|
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
|
|
30.03.2016, 21:27 | 13 |
Тогда конечно полностью оправдано. Но если это чистые константы, а не гибрид полуконстанты-полупеременной.
Не типизируй их тогда. Просто присвой значение.
0
|
30.03.2016, 21:27 | |
30.03.2016, 21:27 | |
Помогаю со студенческими работами здесь
13
почему не работает case? где ошибка? Почему внутри case не работает такой код? Разве select case работает только с целыми числами? Почему не работает sqrt? Подскажите, где ошибка? Простенькая программа с тремя функциями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |