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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из полного пути к файлу выделить только имя файла http://www.cyberforum.ru/cpp-beginners/thread647542.html
Написать программу, которая по введённому полному пути к файлу выделяла бы только имя файла (то, что следует после последнего слеша или обратного слеша). Например, ввод: ...
C++ Класс даты Определить ещё один класс Date, дата в котором хранилась бы в упакованном виде. Интерфейс этого класса должен ПОЛНОСТЬЮ СОВПАДАТЬ с интерфейсом класса из задания 1. При этом эти два класса не... http://www.cyberforum.ru/cpp-beginners/thread647505.html
Загрузить процесс из другого процесса C++
Штурм google ничего не дал. Но я помню что что то было такое в книге Рихтера. Пока ищу книгу и нужную страницу, решил оформить все таки вопрос, ведь возможно не только у меня но и у кого то в будущем...
Найти сумму элементов матрицы в строках с отрицательным элементом на главной диагонали 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... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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).
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru