Я нашел оба long int long
и int long long
могу скомпилировать для типа переменной. Есть ли разница между long int long
, int long long
, long long
и long long int
?
Вообще, идентичен ли тип, если он имеет одинаковое количество long
?
1 длинный:
long l;
int long il;
long int li;
2 длинные:
long long ll;
int long long ill;
long int long lil;
long long int lli;
Также, если вышеприведенное верно, следующие объявления также идентичны?
long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
c++
syntax
long-integer
ggrr
источник
источник
std::swap
. Это не скомпилируется, если типы не идентичны.Ответы:
Согласно стандарту C ++ (7.1.6.2 Простые спецификаторы типов)
Так, например, следующая декларация действительна
Вы можете даже использовать
constexpr
спецификатор вместе сconst
классификатором. НапримерКстати, мы забыли о спецификаторе
signed
! Давайте добавим это, например, перед деклараторомx
В Си вы также можете использовать несколько классификаторов типов в одной и той же последовательности спецификатора объявления. Согласно стандарту C (6.7.3 Классификаторы типов)
Так, например, в C также допустимо следующее объявление
Так что если вам платят в соответствии с количеством символов, набранных в программе, то я советую вам использовать такие объявления. :)
источник
#define REM(...)
, а затем на примере огромного количества слов,i++; REM(Here, we increment i to make sure the new value of i is one more than the old value of i. This is safe because we know the value of i is less than the maximum value of i's type.)
?const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const const answer = 42;
прекрасно компилируется в C :-)Да.
C ++ 11 §7.1.6.2 / 3
источник
Да, но, пожалуйста, не надо . Так же, как английский и немецкий имеют обычные порядки слов для прилагательных и наречий (например, время-манера-место), так и C и C ++. Изменение обычного порядка не смущает компилятор, но смущает ваших коллег-разработчиков. Я бы предположил, что обычный порядок примерно соответствует
static
/extern
(связь)const
/volatile
(модификация)signed
/unsigned
(подпись)short
/long
(длина)хотя, конечно, есть какая-то комната для маневра.
источник
Все остальные ответы здесь говорили о второй части вашего вопроса. Для первой части: «long long» = «long long int»? ответ - да .
C ++ 11 7.1.6.2 Спецификаторы простых типов (таблица 10)
Для второй части вашего вопроса: «long int long» = «int long long»? ответ снова да.
Спецификаторы типа могут встречаться в любом порядке и могут быть смешаны с другими спецификаторами объявления. Поэтому все следующие
действительны и эквивалентны.
источник