C++ 为什么我不能像预期的那样长时间初始化?

C++ 为什么我不能像预期的那样长时间初始化?,c++,64-bit,long-long,C++,64 Bit,Long Long,我的VC2017编译器正在显示这种行为,有人能解释一下发生了什么吗 long long testLLSigned0 = LLONG_MIN; // OK, equal to -922129006921510580 long long testLLSigned1 = -922129006921510580i64‬; // Error, invalid suffix i64 on integer constant long long testLLSigned2 = -9223372036854775

我的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
多亏了,&,我解决了这个问题

代码未编译的最大原因是将计算值从Windows计算器(!)复制到任何现代编辑器(!)。值62129006921510911是在编辑器中用不可见的unicode字符复制的!粘贴到vim中的结果显示:-
62129006921510911LL

旁注:使用LL语法,i64语法是Microsoft特有的,不可移植。

多亏了,&,我解决了它

代码未编译的最大原因是将计算值从Windows计算器(!)复制到任何现代编辑器(!)。值62129006921510911是在编辑器中用不可见的unicode字符复制的!粘贴到vim中的结果显示:-
62129006921510911LL


旁注:使用LL语法,i64语法特定于Microsoft且不可移植。

Unicode字符“从左到右覆盖”(U+202D)导致“数字”成为标识符。相关:文本
-922129006921510580
与值
-922129006921510580
@Eljay不同,谢谢您的回答,从没听说过。我该如何解决这个问题?@DrumM更改编译器(可能)不会有帮助。您需要编辑文件并删除unicode控制字符。From:[…]
仍然支持i64后缀,但应避免使用,因为它是Microsoft特有的,并且不可移植。
[…]unicode字符“从左到右覆盖”(U+202D)导致“数字”作为标识符。相关:文本
-922129006921510580
与值
-922129006921510580
@Eljay不同,谢谢你的回答,我从没听说过。我该如何解决这个问题?@DrumM更改编译器(可能)不会有帮助。您需要编辑文件并删除unicode控制字符。From:[…]
仍然支持i64后缀,但应避免使用,因为它是Microsoft特有的,并且不可移植。
[…]请参阅