[Warning] integer constant is too large for its type

Во-первых, в С++ нет такого типа как

long long

. Во-вторых, у вас на самом деле имеются два объекта: это пременная типа

long long

( что является нестандартным расширением С++ ), и некоторая константа. Константы имеют тип

int

. Если они не умещаются в тип

int

, то они тимеют тип

long

. То есть то, что в левой тчасти инициализации вы указали тип

long long

никак не связано с тем, какой тип будет иметь константа, указанная в правой части вашего объявления. Онитнезависимы друг от друга. То есть сначала определяется тип выражения справа, а затем оно преобразуется к типу объявленного объекта. Компилятор не может разместить вашу константу в типе

long

, поэтому поведение программы неопределенное.

Дополню, что вы можете явно указать тип вашей константы с помощью суффикса, если ваш компилятор это пропустит ( это, как я уже сказал, не соответствует стандарту С++ ). Например, попробуйте написать следующее предложение:

C++Выделить код

| | |
| --- | --- |
| 1 | unsigned long long t = 1267650600228229401496703205376ull; |

То есть к вашей константе я преписал суффикс

ull

. Если ваша константа может поместиться в этом типе, то код должен компилироваться. Желаю успеха!

Комментарий модератора

| | |
| --- | --- |
| | А вот клянчить репутацию не надо, ещё один раз и получите карточку!!! |