Форум программистов, компьютерный форум CyberForum.ru

Код с подвохом: какое значение присвоится переменной? - C++

Восстановить пароль Регистрация
 
 
Revolver19931
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 131
13.07.2016, 20:55     Код с подвохом: какое значение присвоится переменной? #1
есть часть кода
C++
1
2
3
a=0;
x=1;y=-1;
if(x>0) if (y=0) a=1 else a=2
C++
1
if (y=0)
тут идет присвоение значения y=0 а не сравнивание, если что)

вопрос в том какое значение присвоится переменной а ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,601
13.07.2016, 20:59     Код с подвохом: какое значение присвоится переменной? #2
Цитата Сообщение от Revolver19931 Посмотреть сообщение
какое значение присвоится переменной а ?
Скорее всего два.
Ferrari F1
Заблокирован
295 / 281 / 62
Регистрация: 27.01.2015
Сообщений: 1,889
Записей в блоге: 1
Завершенные тесты: 1
13.07.2016, 21:00     Код с подвохом: какое значение присвоится переменной? #3
Цитата Сообщение от Revolver19931 Посмотреть сообщение
какое значение присвоится переменной а ?
двойка?
HenryDukart
 Аватар для HenryDukart
99 / 99 / 27
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
13.07.2016, 21:02     Код с подвохом: какое значение присвоится переменной? #4
В чем подвох? Не знание, как работает оператор =?
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,601
13.07.2016, 21:02     Код с подвохом: какое значение присвоится переменной? #5
Кстати там ошибка синтаксическая...
daniilorain
👻👻👻
 Аватар для daniilorain
17 / 24 / 11
Регистрация: 22.04.2016
Сообщений: 165
13.07.2016, 21:02     Код с подвохом: какое значение присвоится переменной? #6
Никакое, потому что точки с запятой нет перед else. А если её поставить, то 2, потому что if(y = 0) не пройдёт, так как это выражение не возвращает true
Revolver19931
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 131
13.07.2016, 21:28  [ТС]     Код с подвохом: какое значение присвоится переменной? #7
Ну тогда получается что если не пройдет без "';" то значение a останется равным НУЛЮ ?
Хрисипп
 Аватар для Хрисипп
17 / 27 / 8
Регистрация: 09.02.2016
Сообщений: 212
13.07.2016, 21:30     Код с подвохом: какое значение присвоится переменной? #8
Цитата Сообщение от daniilorain Посмотреть сообщение
А если её поставить, то 2, потому что if(y = 0) не пройдёт, так как это выражение не возвращает true
оно как раз и возвращает true, т.к. это утверждение

Добавлено через 1 минуту
Цитата Сообщение от Revolver19931 Посмотреть сообщение
Ну тогда получается что если не пройдет без "';"
вообще ничего не пройдет. как без ; после каждого, где нужно, должно скомпилироваться?
HenryDukart
 Аватар для HenryDukart
99 / 99 / 27
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
13.07.2016, 21:32     Код с подвохом: какое значение присвоится переменной? #9
Цитата Сообщение от Revolver19931 Посмотреть сообщение
Ну тогда получается что если не пройдет без "';" то значение a останется равным НУЛЮ ?
Не, тогда переменной a вообще не существует и ее значение не определено.
Revolver19931
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 131
13.07.2016, 21:43  [ТС]     Код с подвохом: какое значение присвоится переменной? #10
так изначально присваивается значение a=0;
daniilorain
👻👻👻
 Аватар для daniilorain
17 / 24 / 11
Регистрация: 22.04.2016
Сообщений: 165
13.07.2016, 21:46     Код с подвохом: какое значение присвоится переменной? #11
Хрисипп, То, что в скобках у if в данном случае не возвращает true
HenryDukart
 Аватар для HenryDukart
99 / 99 / 27
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
13.07.2016, 21:48     Код с подвохом: какое значение присвоится переменной? #12
Цитата Сообщение от Revolver19931 Посмотреть сообщение
так изначально присваивается значение a=0
так у вас код просто не скомпилируется, вот и всё.
_Ivana
13.07.2016, 21:56
  #13

Не по теме:

Когда я писал свой лисп, я думал - какой результат должен возвращать оператор присваивания? Сначала сделал чтобы возвращал то, что присваивается. И такая забавная засада началась - определяю функцию (факториал например) и следом ее вызываю, пусть от 6. Возвращает факториал 720 Потому что воспринимает как вызов внешней функции (результата оператора определения) от аргумента - значения этой функции от аргумента, то есть 6 В итоге плюнул и во всех непонятных случаях стал возвращать ОК - работает как часы

Unknownx
Заблокирован
13.07.2016, 22:10     Код с подвохом: какое значение присвоится переменной? #14
Revolver19931, значение а будет 2, однако для этого в коде после присваиваний а нужно поставить ; иначе код вообще не соберётся. Также следует отметить что значение у после отработки кода станет 0, вместо изначального -1

Добавлено через 2 минуты
Соберётся вот такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main(){
    int a, x, y;
    a=0;
    x=1;y=-1;
    if((bool)(x>0)) 
    if((bool)(y=0)) 
       a=1; 
    else 
       a=2;
    cout<<a<<endl;
    return 0;
}
http://codepad.org/GgsCGxIC
2
_Ivana
13.07.2016, 22:21
  #15

Не по теме:

Да и без явных кастов само к булу прибулится

0x90h
224 / 189 / 67
Регистрация: 01.10.2015
Сообщений: 646
13.07.2016, 22:24     Код с подвохом: какое значение присвоится переменной? #16
_Ivana, тогда уж проще вообще написать:
C++
1
if (x) a = 2;
_Ivana
2180 / 1385 / 124
Регистрация: 01.03.2013
Сообщений: 4,129
Записей в блоге: 2
13.07.2016, 22:28     Код с подвохом: какое значение присвоится переменной? #17
0x90h, проще, но работать будет по-другому на отрицательных иксах.
0x90h
224 / 189 / 67
Регистрация: 01.10.2015
Сообщений: 646
13.07.2016, 22:32     Код с подвохом: какое значение присвоится переменной? #18
Цитата Сообщение от _Ivana Посмотреть сообщение
на отрицательных иксах
Разве?
_Ivana
2180 / 1385 / 124
Регистрация: 01.03.2013
Сообщений: 4,129
Записей в блоге: 2
13.07.2016, 22:34     Код с подвохом: какое значение присвоится переменной? #19
Цитата Сообщение от 0x90h Посмотреть сообщение
Разве?
Это несложно проверить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2016, 22:57     Код с подвохом: какое значение присвоится переменной?
Еще ссылки по теме:

C++ Какое получается значение и тип имеет литерал 3.14e1L
Задачка: какое значение вернет foo(7)? C++
C++ Переполнение знаковых целых чисел: почему значение переменной обнуляется, а не записывается младшее значение?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2016, 22:57     Код с подвохом: какое значение присвоится переменной? #20
Цитата Сообщение от Revolver19931 Посмотреть сообщение
вопрос в том какое значение присвоится переменной а ?
Такие вопросы правильнее всего задавать компилятору. А если будет расхождение с ожидаемым поведением уже начинать разбор. И если понять не получилось - можно спросить и у других. Но ты, по-моему, первые два пункта проигнорировал.
Yandex
Объявления
13.07.2016, 22:57     Код с подвохом: какое значение присвоится переменной?
Ответ Создать тему
Опции темы

Текущее время: 16:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru