Почему я не могу инициализировать длинную длинную как ожидалось? - PullRequest
0 голосов
/ 04 февраля 2019

Мой компилятор VC2017 показывает это поведение, может кто-нибудь объяснить мне, что происходит?:

long long testLLSigned0 = LLONG_MIN; // OK, equal to -922129006921510580
long long testLLSigned1 = -922129006921510580i64‬; // Error, invalid suffix i64 on integer constant
long long testLLSigned2 = -922337203685477580i64; // OK!
long long testLLSigned3 = -922337203685477580LL; // OK!
long long testLLSigned4 = -‭62129006921510911‬LL; // Error, use of undeclared identifier ‭62129006921510911‬LL
long long testLLSigned5 = -‭62129006921510911i64‬; // Error, use of undeclared identifier ‭62129006921510911i64

1 Ответ

0 голосов
/ 04 февраля 2019

Благодаря Eljay , NathanOliver , eerorika & user1810087 , я решил это.

Самая большая причинакод не компилировался из-за копирования вычисленных значений из калькулятора Windows (!) в любой современный редактор (!).Значение 62129006921510911 было скопировано в редакторе с невидимыми символами юникода!Результат при вставке в vim показал нам: - <202d>62129006921510911<202c>LL

Примечание: используйте синтаксис LL, синтаксис i64 специфичен для Microsoft и не переносим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...