Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
3 / 3 / 2
Регистрация: 03.11.2016
Сообщений: 138
1

Сложение short чисел

13.11.2016, 13:30. Показов 2813. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Посчитайте сумму чисел 17233 и 21413, при условии что вы работаете со знаковыми 16 битными числами, представленными дополнением до 2.

В комментариях я нашел: "сложил два short в java короче ". Но сложение происходит как и с обычным int когда я пытался сделать это через C++. Как решить это задание через c++?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2016, 13:30
Ответы с готовыми решениями:

Почему такой вывод (sizeof(short + short) - 4)
int _tmain(int argc, _TCHAR* argv) { short a = 3; short b = 5; cout << sizeof(a) << endl;...

Undefined reference to Out32(short, short)
Всем привет.подскажите в чём может быть проблема?Сode::Blocks ос Win7x32. вроде все библиотеки...

short int и short
Какая разница, инициализирую я переменную как short int или же как short ? Вроде и тот, и тот тип...

Написать программу которая выводит сумму чисел от a до b. Сложение чисел выполнять в процедуре
Где ошибка? #include <iostream> #include <iomanip> #include <cmath> using namespace std; int...

3
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
13.11.2016, 14:32 2
Лучший ответ Сообщение было отмечено MilkyWay888 как решение

Решение

C
short a, b, c;
a = 17233;
b = 21413;
c = a + b;
1
3 / 3 / 2
Регистрация: 03.11.2016
Сообщений: 138
13.11.2016, 15:46  [ТС] 3
А если написать код
C++
1
2
3
shot a = 23567
shot b = 13456
cout >> a+b;
То результатом будет int значение?
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
13.11.2016, 16:51 4
Для арифметических операций над короткими типами (char, short) в языке Си существует promotion - неявное преобразование коротких типов к типу int перед построением арифметических операций.

Так, например, код

C++
short a, b;
cout << a + b;
после применения promotion превращается в:

C++
short a, b;
cout << (int)a + (int)b;
Таким образом получается, что тип результата будет int, что в свою очередь вызовет перегруженный оператор << для типа int, а не для short

Поэтому в таком случае нужно явно приводить выражение к типу short, либо записать в промежуточную переменную типа short (что вызовет неявное приведение типа). Результат в обоих случаях получится таким, как если бы promtoion'а не было. Единственное (вроде бы как) место, где по языку НЕ строится promotion - это операции атоинкрементации и автодекрементации

Где promotion есть, а где его нет, можно проверить экспериментально:

C++
#include <iostream>
 
int main (void)
{
  short a, b;
 
  a = 32767;
  b = 1;
  std::cout << a + b << std::endl;
 
  a = 32767;
  std::cout << ++a << std::endl;
 
  return 0;
}
что при исполнении даст:

Код
32768
-32768
Зачем афторы Си придумали наркоманство с promotion'ом в арифметических операциях, я не знаю. Подозреваю, что из-за этого, но точной уверенности нет
2
13.11.2016, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2016, 16:51
Помогаю со студенческими работами здесь

Вычислить сумму двух длинных бинарных чисел, используя сложение чисел в двоичной системе счисления
Задано положительное и отрицательное число в двоичной системе.Составить программу вычисления суммы...

сложение чисел
Доброго времени суток! вопрос вроде простой но я не могу понять объясните как сложить числа вот...

Сложение чисел
друзья, помогите пожалуйста. Написать функцию, которая будет складывать в стобик 2 числа. Ввести...

Сложение чисел
Добрый вечер! Помогите пожалуйста новичку. Есть файл mas.txt, необходимо сложить все числа и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru