1

私の 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
4

1 に答える 1

0

Eljay さんNathanOliver さんeerorikaさん、 user1810087さんのおかげで解決しました。

コードがコンパイルされなかった最大の理由は、計算された値を Windows 計算機 (!) から最新のエディター (!) にコピーしたためです。値 62129006921510911 がエディター内で見えないUnicode 文字でコピーされました! vim に貼り付けた結果は次のようになりました: -<202d>62129006921510911<202c>LL

補足: LL 構文を使用してください。i64 構文は Microsoft 固有のものであり、移植性がありません。

于 2019-02-04T15:17:38.743 に答える