Объявление переменной (The C++ way)
От: Muxa  
Дата: 19.12.19 14:24
Оценка: 1 (1)
Пишу тут генератор
Автор: Muxa
Дата: 05.12.19
кода, обнаружил забавное.
            short a;
            signed short b;
            short signed c;
            int short signed d;
            short int signed e;
            short signed int f;
            int signed short g;
            signed int short h;
            signed short int i;

Я правильно понимаю что все эти объявления эквивалентны?
Есть ли еще способы объявить signed short int переменную?

(Тоже самое для unsigned вместо signed и long вместо short)
Отредактировано 19.12.2019 21:29 Muxa . Предыдущая версия .
Re: Объявление переменной (The C++ way)
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.12.19 14:47
Оценка: 4 (1)
Здравствуйте, Muxa, Вы писали:

M>Я правильно понимаю что все эти объявления эквивалентны?


cppreference:

short
short int
signed short
signed short int

Кажется, что довольно просто написать тесты, чтобы проверить, благо от платформы не зависит.
https://elibrary.ru/author_counter.aspx?id=875549
Re[2]: Объявление переменной (The C++ way)
От: Muxa  
Дата: 19.12.19 15:01
Оценка:
M>>Я правильно понимаю что все эти объявления эквивалентны?
N>cppreference:

Note: as with all type specifiers, any order is permitted: `unsigned long long int` and `long int unsigned long` name the same type.

Re: Объявление переменной (The C++ way)
От: B0FEE664  
Дата: 19.12.19 15:02
Оценка: 4 (1)
Здравствуйте, Muxa, Вы писали:

M>Пишу тут генератор кода, обнаружил забавное.

M>
M>            short a;
M>            signed short b;
M>            short signed c;
M>            int short signed d;
M>            short int signed e;
M>            short signed int f;
M>            int signed short g;
M>            signed int short h;
M>            signed short int i;
M>

M>Я правильно понимаю что все эти объявления эквивалентны?
Да.

M>Есть ли еще способы объявить signed short int переменную?

Раньше можно было ещё auto добавлять:
auto signed short int i;


Сейчас signed short int можно объявить через другую переменную:
signed short int i;
decltype(i) j;


Так же не стоит забывать про auto, хотя это уже не просто объявление.
signed short int i = 0;
auto j = i;


M>(Тоже самое для unsigned вместо signed и long вместо short)

У long (в отличии от short) есть стандартный суффикс, поэтому +1 определение:
auto l = 0L;
И каждый день — без права на ошибку...
Отредактировано 20.12.2019 11:30 B0FEE664 . Предыдущая версия .
Re: Объявление переменной (The C++ way)
От: night beast СССР  
Дата: 19.12.19 16:15
Оценка: 1 (1)
Здравствуйте, Muxa, Вы писали:

M>Пишу тут генератор кода, обнаружил забавное.


M>(Тоже самое для unsigned вместо signed и long вместо short)


к сказанному можно добавить, что signed/unsigned char -- это три разных типа
Re[2]: Объявление переменной (The C++ way)
От: Muxa  
Дата: 19.12.19 18:32
Оценка:
BFE>Сейчас signed short int можно объявить через другую переменную:
BFE>
BFE>signed short int i;
BFE>decltype(i) j;

BFE>signed short int i = 0;
BFE>auto j = i;
BFE>


Меня в первую очередь интересую объявления вида `type var;`

BFE>У long (в отличии от short) есть стандартный суфикс, поэтому +1 определение:

BFE>
BFE>auto l = 0L;
BFE>


Можно вот так:
auto s = 0i16;

Хотя тут наверное выводится int16_t;
Re: Объявление переменной (The C++ way)
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.12.19 23:58
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Есть ли еще способы объявить signed short int переменную?


short (i);
Re: Объявление переменной (The C++ way)
От: Chorkov Россия  
Дата: 20.12.19 07:27
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Есть ли еще способы объявить signed short int переменную?


Тамже можно любое вычисляющее тип выражение...
M>
boost::int_t< sizeof(short)*CHAR_BIT >::type a;
std::fcuntion< short( int*, bool, bool, char) >::result_type b;

Несть им числа...
Re[3]: Объявление переменной (The C++ way)
От: B0FEE664  
Дата: 20.12.19 11:29
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Можно вот так:

M>
M>auto s = 0i16;
M>

M>Хотя тут наверное выводится int16_t;

i16 — это не стандартный суффикс.
И каждый день — без права на ошибку...
Re: Объявление переменной (The C++ way)
От: alexanderfedin США http://alexander-fedin.pixels.com/
Дата: 24.12.19 18:35
Оценка:
Здравствуйте, Muxa, Вы писали:

M>Пишу тут генератор
Автор: Muxa
Дата: 05.12.19
кода, обнаружил забавное.

M>
M>            short a;
M>            signed short b;
M>            short signed c;
M>            int short signed d;
M>            short int signed e;
M>            short signed int f;
M>            int signed short g;
M>            signed int short h;
M>            signed short int i;
M>

M>Я правильно понимаю что все эти объявления эквивалентны?
M>Есть ли еще способы объявить signed short int переменную?

M>(Тоже самое для unsigned вместо signed и long вместо short)


https://onlinegdb.com/SyXVcAyJL
#include <type_traits>

int main()
{
    using namespace std;
    
    static_assert(is_same<short, short int>::value, "");
    static_assert(is_same<signed short, short int>::value, "");
    return 0;
}
Respectfully,
Alexander Fedin.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.