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

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

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

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

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

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

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


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

"Имена, начинающиеся с подчеркивания, зарезервированы для специфических нужд" - что Страуструп имел ввиду? - C++
"Имена, начинающиеся с символа подчеркивания, зарезервированы для специфических нужд реализации и среды исполнения, поэтому такие имена не...

Задание из книги Р.Лафоре. Что автор имел ввиду? - C++
Здравствуйте! Добрался до 7-й главы книги Лафоре и мне непонятно что имел ввиду автор. Хотя, возможно это переводчик так перевел... ...

Упражнение из "Философия С++" Б. Эккель т. 1. Не понимаю что имеется ввиду. - C++
#define FIELD(a) char* a##_string; int a##_size; Измените макрос FIELD(), так чтобы в нем присутствовал числовой аргумент index....

Доказать, что рекурсивная последовательность имеет предел - C++
Вот заданьице: Доказать, что рекурсивная последовательность имеет предел при n>>бесконечности и найти значение этого предела....

Задача:Страуструп. 4.11.4 - C++
1.Напишите программу,которая печатает символы от 'a' до 'z' и цифры от '0' до '9' и их целые значения. 2.Проделайте то же самое для...

Страуструп. задание - C++
насколько я понял задание - есть класс class STC { unexpected_handler old; public: STC(unexpected_handler h) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
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);
}
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
1
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 1
14.08.2013, 19:22 #4
Цитата Сообщение от 0x10 Посмотреть сообщение
некорректное значение, несмотря на тип unsigned.
Значение корректно
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
14.08.2013, 19:28 #5
Croessmah, предлагаю не придираться к словам, и так понятно о чем я говорил.
0
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,389
Записей в блоге: 3
Завершенные тесты: 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());
}
аргумент корректен - это ошибка программиста.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 20:39
Привет! Вот еще темы с ответами:

Страуструп и Графика - C++
Начал читать Страуструпа. По настоянию автора подключил его заголовочные файлы и библиотеку FLTK. Но программа не работает: ...

Верно ли, что только одна из логических переменных a и b имеет значение true - C++
Присвоить логической переменной значение логического выражения, истинного при выполнении следующего условия и ложного в противном случае: ...

Бьерн Страуструп рассказывает о c++14 - C++
Подумал, может кому интересно будет :) 1OEu9C51K2A

namespace Страуструп 3-е издание - C++
Добрый вечер народ) Читаю книгу Страуструпа 3-е издание там встретился такой фрагмент кода: namespace Stack { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.08.2013, 20:39
Ответ Создать тему
Опции темы

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