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

Форма записи с использованием "?" знака - C++

Восстановить пароль Регистрация
 
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.07.2013, 13:43     Форма записи с использованием "?" знака #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
 
int main()
{
int a = 0;
int b = 0;
int res = 0;
std::cin >> a >> b;
 
res = (a > 0 && b < 10) ? a: 100;
 
std::cout << res << "\n";
 
system("pause");
return 0;
}
строчка 10, подскажите, правильно ли я понимаю запись и самое главное конструкцию

(a > 0 && b < 10) ? a - если условия в скобках выполняются, то будет присвоено a причем a будет взято из-за скобок, т.е. вот это a (выделенное жирным) - (a > 0 && b < 10) ? a

(a > 0 && b < 10) ? a: 100 если условие в скобках не выполняется то будет присвоено значение 100 т.е. ни a ни b, а именно 100.

все верно?

Добавлено через 2 минуты
И еще вопрос, то что я a, b, res сразу инициализирую нулями (во избежание ошибок, конечно не в данной программе, а вообще), это нормальный подход или я только зря строчки перевожу (можно же было записать int a, b, res;) ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 13:43     Форма записи с использованием "?" знака
Посмотрите здесь:

C++ Значение знака "%"
C++ Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". C++
Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять" C++
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 13:44     Форма записи с использованием "?" знака #2
В скобках только одно логическое выражение: (a > 0 && b < 10). Если оно истинно, то идем по ветке ? (в данном случае, будет заменено присвоено a). Идем по ветке ":" если условие ложно.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
29.07.2013, 13:45     Форма записи с использованием "?" знака #3
Цитата Сообщение от VLK Посмотреть сообщение
res = (a > 0 && b < 10) ? a: 100;
по другому это можно записать вот таким способом:
C++
1
2
3
4
if (a > 0 && b < 10)
    res = a;
else
    res = 100;
это одно и то же
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 13:45     Форма записи с использованием "?" знака #4
Цитата Сообщение от VLK Посмотреть сообщение
(a > 0 && b < 10) ? a
верно
Цитата Сообщение от VLK Посмотреть сообщение
(a > 0 && b < 10) ? a: 100;
тоже самое только иначе 100(else) Вроде так
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 13:46     Форма записи с использованием "?" знака #5
Лучше инициализировать где есть потенциальная угроза вызвать неинициализированную переменную. Например, можно не инициализировать если на следующей строке будет ввод этой переменной.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.07.2013, 13:47  [ТС]     Форма записи с использованием "?" знака #6
А, все я понял конструкцию, если true то до двоеточия (":") и будет присвоено значение, которое идет после "?", если false, то берется только то что после двоеточия (":").
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 13:49     Форма записи с использованием "?" знака #7
Цитата Сообщение от VLK Посмотреть сообщение
И еще вопрос, то что я a, b, res сразу инициализирую нулями (во избежание ошибок, конечно не в данной программе, а вообще), это нормальный подход или я только зря строчки перевожу (можно же было записать int a, b, res; ) ?
Не стоит обнулять, всё равно присвоишь значения с клавиатуры.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.07.2013, 13:56  [ТС]     Форма записи с использованием "?" знака #8
Цитата Сообщение от Fintt Посмотреть сообщение
Не стоит обнулять, всё равно присвоишь значения с клавиатуры.
Ну в этой программе да, а если программа большая и в ней очень много переменных и есть шанс на то, что я забуду что то инициализировать при этом в программе буду пытаться к этой переменной обратиться, тогда же будет печально?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
29.07.2013, 13:57     Форма записи с использованием "?" знака #9
Форма записи с использованием "?" знака
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 14:00     Форма записи с использованием "?" знака #10
не стоит обнулять - это лишняя инструкция присвоения для процессора
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 14:00     Форма записи с использованием "?" знака #11
Вообще пишут в книгах что "не жалейте времени на придумывания переменных", чтобы не путаться. Если использовать те же переменные это как бы не оч правильно, сам не разберёшься что к чему, а если будешь так делать, то нужно будет обнулять. Почитай про локальные и глобальные переменные, в примерах увидишь где нужно обнулять.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.07.2013, 14:02  [ТС]     Форма записи с использованием "?" знака #12
И еще вопрос, может он покажется глупым и размыты, какие еще комбинации записи существуют с "?" знаком?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 14:07     Форма записи с использованием "?" знака
Еще ссылки по теме:

Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" C++
C++ Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000
C++ Необработанное исключение в "0x104b2288" в "Matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcd

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5437 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
29.07.2013, 14:07     Форма записи с использованием "?" знака #13
VLK, Тернарная условная операция.
Yandex
Объявления
29.07.2013, 14:07     Форма записи с использованием "?" знака
Ответ Создать тему
Опции темы

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