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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Что имеет ввиду Страуструп? - C++

14.08.2013, 19:06. Просмотров 353. Ответов 5
Метки нет (Все метки)

Цитата Страуструпа, Язык программирования C++. Специальное издание:

Беззнаковые (unsigned) целые типы идеальны для трактовки блоков памяти как
битовых массивов. Использование unsigned вместо int с целью заполучить лишний
бит для представления целых положительных значений почти всегда является
неудачным решением.
Т.е. если нужны только беззнаковые целые, то unsigned - неудачное решение ?


А попытки гарантировать положительность числовых
значений объявлением целой переменной с модификатором unsigned опровергаются
правилами неявных преобразований типов (§С.6.1, §С.6.2.1).
если правильно понял, то в арифметических операциях unsigned может потеряться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2013, 19:06     Что имеет ввиду Страуструп?
Посмотрите здесь:

C++ Задача:Страуструп. 4.11.4
Страуструп или С++ за 21 дней? C++
C++ Задание из книги Р.Лафоре. Что автор имел ввиду?
Страуструп. задание C++
дайте подсказку. Страуструп C++
C++ namespace Страуструп 3-е издание
C++ Упражнение из "Философия С++" Б. Эккель т. 1. Не понимаю что имеется ввиду.
C++ Верно ли, что только одна из логических переменных a и b имеет значение true
C++ Страуструп. Грамматики. Парсер
Страуструп и Графика C++
Доказать, что рекурсивная последовательность имеет предел C++
"Имена, начинающиеся с подчеркивания, зарезервированы для специфических нужд" - что Страуструп имел ввиду? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2444 / 1616 / 236
Регистрация: 24.11.2012
Сообщений: 3,965
14.08.2013, 19:09     Что имеет ввиду Страуструп? #2
Программа компилируется без ошибок и предупреждений, при этом в функцию f попало некорректное значение, несмотря на тип unsigned.

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
void f(unsigned n)
{
    std::cout << n << std::endl;
}
 
int main()
{
    f(-1);
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
14.08.2013, 19:10     Что имеет ввиду Страуструп? #3
Цитата Сообщение от BigLow Посмотреть сообщение
Т.е. если нужны только беззнаковые целые, то unsigned - неудачное решение ?
почему?
Цитата Сообщение от BigLow Посмотреть сообщение
если правильно понял, то в арифметических операциях unsigned может потеряться?
нет, это значит, что
C++
1
2
3
4
unsigned char a=0;
unsigned char b=1;
unsigned char c=a-b;//с=255
char d=c;//d=-1
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,467
Записей в блоге: 2
Завершенные тесты: 1
14.08.2013, 19:22     Что имеет ввиду Страуструп? #4
Цитата Сообщение от 0x10 Посмотреть сообщение
некорректное значение, несмотря на тип unsigned.
Значение корректно
0x10
2444 / 1616 / 236
Регистрация: 24.11.2012
Сообщений: 3,965
14.08.2013, 19:28     Что имеет ввиду Страуструп? #5
Croessmah, предлагаю не придираться к словам, и так понятно о чем я говорил.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12512 / 7074 / 794
Регистрация: 27.09.2012
Сообщений: 17,467
Записей в блоге: 2
Завершенные тесты: 1
14.08.2013, 20:39     Что имеет ввиду Страуструп? #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Croessmah, предлагаю не придираться к словам, и так понятно о чем я говорил.
Понятно. Вот с signed:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <numeric>
 
void f(int n)
{
    std::cout << n << std::endl;
}
 
int main()
{
    f(std::numeric_limits<unsigned int>().max());
}
аргумент корректен - это ошибка программиста.
Yandex
Объявления
14.08.2013, 20:39     Что имеет ввиду Страуструп?
Ответ Создать тему
Опции темы

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