Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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
C++ C++;一元否定与前缀减量的优先级_C++_Prefix_Operator Precedence - Fatal编程技术网

C++ C++;一元否定与前缀减量的优先级

C++ C++;一元否定与前缀减量的优先级,c++,prefix,operator-precedence,C++,Prefix,Operator Precedence,我在学习C语言时遇到了以下问题++ int a = 5; -----a; 第二条语句没有编译。该语句可以被解读为-(-a))或-(-a)),因为这两个运算符位于同一优先组中。在这种情况下,只有第二种解释(当您使用括号时)才有意义。因此,我看不出有任何模棱两可之处 因此,我的问题是:为什么一元否定不在比前缀减量更高优先级的组中?-我肯定以前有人以某种形式问过这一问题,包括我的一个案例。相关(或重复?):事实上,看看你在问什么。它不是学习C++。这是关于C中语法的微观荒谬解释。实际上,它说的是-(

我在学习C语言时遇到了以下问题++

int a = 5;
-----a;
第二条语句没有编译。该语句可以被解读为
-(-a))
-(-a))
,因为这两个运算符位于同一优先组中。在这种情况下,只有第二种解释(当您使用括号时)才有意义。因此,我看不出有任何模棱两可之处


因此,我的问题是:为什么一元否定不在比前缀减量更高优先级的组中?

-我肯定以前有人以某种形式问过这一问题,包括我的一个案例。相关(或重复?):事实上,看看你在问什么。它不是学习C++。这是关于C中语法的微观荒谬解释。实际上,它说的是
-(a-=2)
,因为我不知道有任何真正的代码(30多年后)会将减量2表示为'--(-a)'或'--a',运算符优先级并没有真正关注这些结构,虽然有混淆比赛,但我觉得更烦人。C++是关于编写可理解代码的。作为现实工作的一部分,C有很多难以理解的荒谬之处,但即使如此,可读性也远比计算出5更重要dashes@coolcat007我明白了,我也经历过。尽管如此,我还是无法理解为什么他们会提出一些奇怪的场景来研究这个主题,而实际上有几十亿行代码可以提供更多有价值的例子。现在,如果严格遵循组3中的优先顺序,使用从右到左的关联,最接近“a”的3'-'将解析为(--((a)),但不会编译,因为-a返回的是右值(不能减量)。这将继续到外部,同样。-(-a)不能编译的原因是相同的。代码不能编译,为什么要研究它?这可能是一个更好的复制品。答案覆盖整个游戏。答案与C++中的相同。这与优先权无关,这是一个词汇问题。