![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
![]() Код:
С оператором for я знаком и примерно представляю как он выполнется. Подскажите пожалуйста, Инициализация j = num/2. В переменную j инициализируется значение 100 или 50? Мне непонятно условие в цикле (i <= num/2) & ( j >= 2). 2 <= 100(50)/2 & 100(50) >= 2 Как это условие можно прочитать?: два меньше/равно 100(50) & 100(50) больше/равно 2 Если я не прав, подскажите как правильно и легко это понять условие. ![]() |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 16.11.2020
Сообщений: 243
|
![]()
Не похоже
Цитата:
Мало того, что скобки опустили, так еще и переписали неправильно. Как и любое другое: (i <= 100/2) & ( j >= 2) Кстати, точку с запятой в for пропустили. |
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
![]() Цитата:
В этом условии i и j является True. Почему тогда сначала выполняется условие J а не i? |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
bITA666
1. Мне видится, что в коде есть пропуск. Что-то не дописано. Тело цикла не может начинаться с закрывающейся фигурной скобки. 2. (i <= 100/2) & ( j >= 2); Цитата:
Левое выражение проверяется. Если i будет меньше или равно (не больше) 100/2 (это 50), то значение этого выражения получится True, а иначе - False. Проверяется правое выражение. Если j будет больше или равно (не меньше) 2 , то значение этого выражения будет True, а иначе False. Над полученными значениями выполняется битовая операция AND (И). Если одно из выражений будет False, то и результат будет False. В этом примере i нарастает, а j - убывает. ( num & i ) == 0) Тут выполняется побитовая операция между num и i. Как только все единичные биты числа i попадут на нулевые биты числа num условие станет True и значение i сохранится. На следующих шагах цикла это условие всегда будет False, поскольку первое выражение не будет равно 1. Аналогично и для второго условного оператора. PS: Как помнится, оптимизатор проверит первое условие. Если получится False, то второе условие даже не проверяется.
Как-то так, ...
|
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.11.2020
Сообщений: 243
|
![]()
Банальная описка.
Логическая Нет. Это С#. Для такого поведения нужна && |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
FrosyaZZ
Цитата:
В примере написан один амперсанд. И тут, вроде, как и у меня. ![]() https://ru.wikipedia.org/wiki/%D0%9E...%D0%B8_C%2B%2B
Как-то так, ...
|
|
![]() |
![]() |
![]() |
#7 | ||
Форумчанин
Регистрация: 16.11.2020
Сообщений: 243
|
![]()
Еще раз это C#.
& - logical AND Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,367
|
![]()
Вкусил.
![]() Видимо что-то от Си осталось у меня. Не думал, что так поменяют. Над числами: a & b - битовая И, а над boolean - логическая И ![]() Будем знать ...
Как-то так, ...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Применение DataGridViewComboBoxColumn в двух связанных таблицах | jon1989 | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 0 | 03.04.2017 09:32 |
Применение статических переменных | RAFA91 | Общие вопросы C/C++ | 5 | 08.05.2015 23:08 |
функции двух переменных | cote | Помощь студентам | 1 | 04.05.2012 20:46 |
Задавать имена переменных в цикле | Shouldercannon | Общие вопросы Delphi | 3 | 26.07.2010 21:24 |
Инициализация нескольких переменных в цикле for | AxenicX | Помощь студентам | 1 | 17.11.2009 00:30 |