C/C++分解标识符的时候,使用的是最大原则(也叫贪心原则),也就是,根据能形成的最长的标识符进行分割,而不管是不是符合语法规定。所以:
a = b / *p;
a赋值为b除以p指向的变量。
a=b/*p;
a=b,后为注释,报语法错误。
LZ的情况与此类似。以前+=,-=不是这么写的,而是:
a =+ b;
但是,如果没有空格,则
a = -b;
和
a =- b;
极易出现错误,所以才在ANSI C中将=x系列操作符换为x=。
另外,C++09标准计划接受诸如:
vector<vector<int>> arr;
这种代码,根据贪心原则,以前这种代码会报语法错误,因为编译器会将>>认定为右移操作符,而不是两个尖括号的反括号。现在则认为这样的合法的。不过其余的情况会不会改变我就不知道了……