Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是`+++;`它只是一个后固定增量,后跟一个中缀(总是)?_Java_C++_Visual C++_G++ - Fatal编程技术网

Java 是`+++;`它只是一个后固定增量,后跟一个中缀(总是)?

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

考虑一下为Java发布的SO问题

我明白

  • 没有像'+++'这样的运算符,它只是一个后缀增量,后跟一个中缀加法
  • 这是对可读性的犯罪
  • 我想知道(只是出于好奇)如果

    ++
    它只是一个后缀增量,后跟一个中缀添加,而不是
    ++
    它只是一个中缀添加,后跟一个前缀增量,或者它是一个未定义的行为

    假设我已经测试了以下程序

    #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