Практический курс по C/C++: stepik.org/course/193691/ Телеграм-канал: t.me/java_and_c Инфо-сайт: proproprogs.ru/c_base Что такое циклы, зачем они нужны и как можно реализовать цикл с помощью оператора while. Цикл с предусловием.
Пікірлер: 21
@vladimirastrelin17192 ай бұрын
Спасибо за Ваши труды, Сергей, Вы лучший преподаватель! Подача материала на самом высшем уровне! Отдельное спасибо за панд скатывающихся с горки :)
@user-zw3dt4qx3i Жыл бұрын
Утром отлично заходит👍😎
@donfedor007 Жыл бұрын
Спасибо! Очень интересно!!!
@andredru42784 ай бұрын
Спасибо. Все понятно.
@ufc_uz6 Жыл бұрын
Спасибо!
@renigat_tv90519 ай бұрын
Отличное объяснение материала !!!
@user-xm5zl9up4r4 ай бұрын
Спасибо
@jamjam333711 ай бұрын
спасибо!👏👍
@TheTVfootbal Жыл бұрын
Очень понравились ваши уроки по Flask, хотел бы узнать будут ли по Fast API?
@selfedu_rus Жыл бұрын
Пока не планирую.
@weerbox Жыл бұрын
По поводу условия (++i
@weerbox Жыл бұрын
Погуглил, почитал 99 стандарт и пришёл к такому выводу. В выражении (i++
@selfedu_rus Жыл бұрын
Все логические операции (&&, ||) являются точками следования, т.е. все побочные эффекты выполняются при переходе к следующему подусловию. Поэтому операции инкремента выполнятся до проверки i
@weerbox Жыл бұрын
@@selfedu_rus это как раз понятно, вопрос был не в этом. Я про то, верно ли я понял, что n++, возвращает копию данных (rvalue), а уже после, до начала следующей точки следования происходит инкремент n (lvalue). Т.е. тогда утверждение из более раннего видео, где говорилось, что в операторе вида i = n++; происходит сначало присвоение i = n, а затем инкремент n, не совсем верно, т.к. согласно стандарта, точный момент инкремента n в данном случае не определен, но должен произойти до начала следующей точки следования. Т.е. инкремент n вполне может произойти и до присвоения значения i, т.к. операция присвоения не является точкой следования.
@selfedu_rus Жыл бұрын
@@weerbox Не совсем понимаю тогда вопроса. В команде: i = n++; переменной i присваивается именно копия n (как иначе?), а значит, инкремент сработает точно, после присваивания, иначе копия n оказалась бы на единицу больше (инкремент на уровне машинных кодов работает с самой переменной), а это уже противоречение порядка работы постфиксной формы инкремента.
@weerbox Жыл бұрын
@@selfedu_rus А почему вы не рассматриваете такой вариант?: 1. n++ возвращает копию значение равное значению n (это же еще не присвоение в i, а вычисление правого операнда, ведь выражение может быть и чуть сложнее например i = n++ + 1;) 2. n инкрементится (при этом возвращенное n++ rvalue не меняется т.к. оно не ассоциировано с областью памяти на которое ссылается n) 3. i присваевается вычисленное правостороннее выражение (в котором не использовалось инкременченное значение n) А если бы было точно известно, что инкрементится только после присвоения, то тогда бы, как я понимаю, не было никакого неопределенного поведения в операторах типа: i = n++ + n++; i = n++ + n; i = i++; и т.д. Вот что написано в 99 стандарте по этому поводу: "The result of the postfix ++ operator is the value of the operand. After the result is obtained, the value of the operand is incremented. (That is, the value 1 of the appropriate type is added to it.) ... The side effect of updating the stored value of the operand shall occur between the previous and the next sequence point." А так как присвоение не является sequence point, следовательно инкремент возможен как до (т.е. на начале инструкции i = n++;), так и после присвоения (т.е. до следующей точки следования), отсюда и ub в тех примерах выше. Я так понимаю.
@martinbecker3165 Жыл бұрын
Здравствуйте. Почему видео 35, а показывает 23, 12 скрыто, или есть условия для их просмотра ?
@selfedu_rus Жыл бұрын
Они будут постепенно выходить.
@elbinalfadorson3822 Жыл бұрын
Подскажите, а cin >> из С++ тоже можно с while запихнуть как scan()?