在与负数进行比较时,在程序中迷路'\ 342'

rsk*_*k82 -2 c++ gcc compiler-errors

每当我与负数GCC进行比较时,我都会看到:

error: stray '\342' in program
   if ( -4 < ÔÇô3 ) return 1;
   ^
compilation terminated due to -Wfatal-errors.
Run Code Online (Sandbox Code Playgroud)

码:

int main() {
  if ( -4 < –3 ) return 1;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Csq*_*Csq 5

第三个前面的破折号是一个看起来像破折号的Unicode字符.删除它,并插入一个新的破折号,你会没事的.

如果您使用复制粘贴,请注意,因为粘贴的代码可能包含Unicode字符,并且可能导致此类编译错误.

如果您手动将其键入编辑器,请使用其他编辑器或更改编辑器的设置,以便不将标准超标转换为其他字符.例如Microsoft Word执行此转换,但我希望您不在Word中编写代码.


错误消息的解释:

您以UTF-8字符集保存文件.您使用的更改后的连字符保存为三个连续字节:0xE2 0x80 0x93(hexa值)

g ++逐字节解析文件.它0xE2首先遇到,它认为无效和输出error: stray '\342' in program.的342是的八进制表示0xE2.并且\342是有效的C++代码,它是0xE2字符的转义版本.有关详细信息,请参阅C++ 转义序列,\nnn表示由八进制nnn数表示的字符.