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

Зачем нужны разнообразные целые типы переменных? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из полного пути к файлу выделить только имя файла http://www.cyberforum.ru/cpp-beginners/thread647542.html
Написать программу, которая по введённому полному пути к файлу выделяла бы только имя файла (то, что следует после последнего слеша или обратного слеша). Например, ввод: E:\video\100_Greatest_Discoveries\09_fizika.avi вывод: 09_fizika.avi Использовать класс std::string можно ли реализовать болие ли мение просто? чтобы было понятно :)
C++ Класс даты Определить ещё один класс Date, дата в котором хранилась бы в упакованном виде. Интерфейс этого класса должен ПОЛНОСТЬЮ СОВПАДАТЬ с интерфейсом класса из задания 1. При этом эти два класса не должны зависеть друг от друга. Проверкой на правильность решения является то, что при подключении модуля с этой реализацией класса Date в программу из задания 1 функцию main() не надо переписывать и... http://www.cyberforum.ru/cpp-beginners/thread647505.html
Загрузить процесс из другого процесса C++
Штурм google ничего не дал. Но я помню что что то было такое в книге Рихтера. Пока ищу книгу и нужную страницу, решил оформить все таки вопрос, ведь возможно не только у меня но и у кого то в будущем возникнет такой вопрос. Идея заключается вот в чем. 1). Программка №1- оболочка с красивым интерфейсом принимающая что то и по нажатию кнопки Start записывает в файл принятое и из другого файла ...
Найти сумму элементов матрицы в строках с отрицательным элементом на главной диагонали C++
Дана вещественная прямоугольная матрица. Найти сумму элементов в строках с отрицательным элементом на главной диагонали. Если сумма больше 0, то элементы последней строки возвести в квадрат. Помогите пожалуйста.
C++ Вычислить методом Ньютона корень уравнения http://www.cyberforum.ru/cpp-beginners/thread647460.html
Помогите, пожалуйста, написать программу, вычисляющую методом Ньютона: sinx - x + 0,5 = 0, интервал изоляции корня .
C++ Массив из рандомов Существует массив, его нужно заполнить рандомными цифрами от 1 до 36, так, чтобы цифры не повторялись: сам дошел до вот такого: #include "iostream" #include "cstdio" #include "cstdlib" using namespace std; int main() { подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.08.2015, 23:16     Зачем нужны разнообразные целые типы переменных?
Цитата Сообщение от ValeryS Посмотреть сообщение
char, который в зависимости от настроек будет или unsigned char, или signed char
Всё таки char/unsigned char/signed char это 3(три, Карл!) разных типа.
3.9.1/1: Plain char, signed char, and unsigned char are three distinct types.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
void f(char){ 
    cout << "char\n";
}
 
void f(unsigned char){ 
    cout << "uchar\n";
} 
 
void f(signed char){ 
    cout << "schar\n";
}
 
int main() {
 
    char c = '0';
    unsigned char uc = c;
    signed char sc = c;
 
    f(c); 
    f(uc); 
    f(sc); 
}
http://coliru.stacked-crooked.com/a/98e9d64a353ecb83

А вот как значение char (без явного указания знаковости) будет интерпретировано в виде числа (т.е. по сути, какой будет диапазон значений), зависит от реализации (может быть такой же как у signed char, а может и как у unsigned char).
Например, следующий код:
C++
1
2
3
4
5
6
#include <iostream>
 
int main() {
    char c = -100;
    std::cout << static_cast<int>(c) << std::endl;
}
может вывести как "-100", так и "156" в зависимости от используемого компилятора или даже его ключей.
В частности в gcc/clang можно форсировать интерпретацию диапазона значений char ключами: -funsigned-char, -fsigned-char.
Цитата Сообщение от hoggy Посмотреть сообщение
все эти short/long и компания - это на самом деле модификаторы одного и того же int.
Строго говоря, это не соответствует действительности. К тому же signed и unsigned char'ы в списке целочисленных типов такие же полноправные участники, как и остальные int'ы:
3.9.1 Fundamental types
p2: There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long long int” ...
The standard and extended signed integer types are collectively called signed integer types.
p3: For each of the standard signed integer types, there exists a corresponding (but different) standard unsigned integer type: “unsigned char”, “unsigned short int”, “unsigned int”, “unsigned long int”, and “unsigned long long int” ...
The standard and extended unsigned integer types are collectively called unsigned integer types.
Т.о. int'ы всё же разные (а некоторые даже и не int'ы), но в общем они называются "целочисленными типами" (integer types).
 
Текущее время: 08:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru