Java 是`+++;`它只是一个后固定增量,后跟一个中缀(总是)?
考虑一下为Java发布的SO问题 我明白Java 是`+++;`它只是一个后固定增量,后跟一个中缀(总是)?,java,c++,visual-c++,g++,Java,C++,Visual C++,G++,考虑一下为Java发布的SO问题 我明白 没有像'+++'这样的运算符,它只是一个后缀增量,后跟一个中缀加法 这是对可读性的犯罪 我想知道(只是出于好奇)如果 ++它只是一个后缀增量,后跟一个中缀添加,而不是++它只是一个中缀添加,后跟一个前缀增量,或者它是一个未定义的行为 假设我已经测试了以下程序 #include <iostream> int main() { int x = 1; std::cout<< x+++1 << std::end
++
它只是一个后缀增量,后跟一个中缀添加,而不是++
它只是一个中缀添加,后跟一个前缀增量,或者它是一个未定义的行为
假设我已经测试了以下程序
#include <iostream>
int main() {
int x = 1;
std::cout<< x+++1 << std::endl;
std::cout<< 1+++x << std::endl;
}
而不是
'+++' its just an infix add followed by a prefix increment
是的,最大munch规则告诉我们,
++++
被解析为++++
(不是后缀后跟中缀,而是后缀后跟++
操作符),它也会呈现
1+++x <----> 1++ + x
1+++x1+++x
非法,因为<代码> 1 > /> >不是LValue.< /P>关于代码> LValue/Cuth.Gy的大澄清,C++标准也规定编译器应该使用最大MunCH规则的事实,这里有一个关于C的介绍,它讲的是C,但我认为C++和java是一样的。§3. “…否则,下一个预处理标记是可能构成预处理标记的最长字符序列,即使这会导致进一步的词法分析失败。”@Angew不知道,我以为这是从语法推断出来的。每天学习新的东西。避免问题的一个非常简单的方法是编写
++
或++
来指明你真正想要的东西。即使编译器知道关键情况,您的程序员同事也可能不知道。为什么要把他们搞糊涂?为什么要投否决票?可能是因为我很好奇,即使我不是猫,它也会杀了我?我认为-1是显而易见的。这个问题没有用,因为答案没有实际用途。就像用+1来补偿被否决的选票一样。出于好奇而提出的问题可能没有直接的用处,但它们可以帮助人们理解语言/编译器中的底层过程,这通常比实际的“我怎么做这个”类型的问题具有至少同样多的总体效果。另外,Abhijit在问题中明确提到使用+++是一种糟糕的风格;阅读的人不会尝试使用它,所以没有负面影响,所以没有必要投反对票。
1+++x <----> 1++ + x