![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Lion_Smith |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Есть вот такой цикл:
А что мне сделать что бы переменная i была типа float, а переменная j типа int?? Или все инициализаторы в цикле For должны непременно быть одного типа? А если я например хочу использовать в качестве счётчиков две переменные разного типа int и string? |
|||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 2 Всего: 27 |
Что мешает непосредственно в теле цикла опреировать переменно типа float...
-------------------- ![]() |
|||
|
||||
| Lion_Smith |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Ни чего!
|
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
-------------------- I don't need a reason being who I am... |
|||
|
||||
| Ram1reS |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 25.4.2008 Где: Москва Репутация: 2 Всего: 5 |
Хмм... видимо Вы неправильно понимаете как работает цикл For.
т.е. можете оперировать чем угодно и как угодно, например:
--------------------
|
||||||||
|
|||||||||
| Lion_Smith |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Хм..
здесь в качестве инициализатора используется одна переменная типа string, а если я хочу использовать 2 переменные? Например одну s типа стринг, а другую i типа int?? Как их инициализировать в инициализаторе?? Такой код не подходит:
В данном случае переменная j не умрёт после того как цикл будет закончен, а нужно чтоб умерла. Кроме того при компиляции выдало ошибку: Error 1 A local variable named 'j' cannot be declared in this scope because it would give a different meaning to 'j', which is already used in a 'child' scope to denote something else C:\Documents and Settings\Rkuznetsov\My Documents\Visual Studio 2008\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 95 23 WindowsFormsApplication1 Это сообщение отредактировал(а) Lion_Smith - 16.7.2008, 11:59 |
||||||||
|
|||||||||
| Ram1reS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 25.4.2008 Где: Москва Репутация: 2 Всего: 5 |
Вот вырезка из спецификации C# (8.8.3)
Соответвтенно объявить вы можете только одну переменную, а вот инициализировать уже объявленные сколько угодно через запятую. --------------------
|
|||
|
||||
| Lion_Smith |
|
||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Спецификация дело хорошее!
А на практике я имею примерно следующее! Вот синтаксис цикла for:
Cколько раз будет выполнено тело этого цикла зависит от трех управляющих элементов, заданных в скобках: 1) Инициализаторы задают начальное значение одной или нескольких переменных, часто называемых счетчиками или просто переменными цикла. 2) Условие задает условие окончания цикла. Результатом вычисления условия должно быть значение true или false. Условие вычисляется на каждой итерации цикла. Если условие цикла истинно, то выполняется тело цикла, т.е. оператор. Как только условие становится ложным, цикл завершает свою работу. 3) После того как выполненно тело цикла, изменяются значения счетчиков и снова проверяется условие. Значения счётчиков (инициализаторов) изменяются в списке выражений, которые записываются через запятую. С условием всё ясно. Это любое логическое выражение, оно одно его значения true или false. Со списком вырожений тоже всё понятно. Это просто блок выражений которые изменяют значения переменных, причём в этом блоке можно на ряду с инициализаторами использовать и ранее объявленные и инициализированные в коде переменные. Например:
Из этого же примера видно, что значение счётчиков можно свободно использовать и в теле цикла. Теперь обратим внимание на счётчики (инициализаторы). Это как минимум одна переменная любого типа срок жизни которой ограничен циклом. Тоесть переменная-инициализатор уничтожается как только цикл перестаёт работать, её значение теряется и показанный ниже код выдаст нам ошибку ещё на этапе компиляции, потому что к моменту str=k, переменая k уже будет уничтожена. В этом и есть прелесть использования инициализаторов.
Стоит отметить что иницализатор вовсе не обязательно вообще где бы то ни было использовать. Здесь мы создаём счётчик, но не где его не используем, по этому инициализировать, тоесть присваивать ему значение вовсе не обязательно:
а если не создавать счётчик, а попытаться использовать уже существующую переменную str, то нам опять выдаст ошибку компиляции. Счётчиков может быть несколько, тогда их можно перечислить через запятую.
Все эти переменные создаются и существуют внутри цикла и у всех у них один тип. В данном случае это тип int. Нельзя задать в качестве инициализаторов цикла две и более разнотипных переменых!!! Нельзя использовать в качестве инициализатора уже существующую переменную. Нельзя задать в области инициализации значение кукой-нибудь существующей переменной. Такой код выдаст ошибку:
За то, раз переменная k является инициализаторорм цикла, то мы можем использовать её вновь и вновь в нескольких циклах нашего кода подряд, всё равно по окончани каждого из этих циклов она будет уничтожена. PS: это конечно всем известно, так что сорри за мой маленький |
||||||||||||
|
|||||||||||||
| oleeg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 27.11.2006 Репутация: нет Всего: нет |
Так в чем проблема, можно использовать 2 цикла.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |