gpt4 book ai didi

c# - 为什么 Postfix++/-- 在 C# 中被归类为主要运算符?

转载 作者:可可西里 更新时间:2023-11-01 07:58:39 26 4
gpt4 key购买 nike

目前,我正在向一类 C++ 程序员讲授 C# 语言的基础知识。在我们讨论主题运算符时,我使用了 C# 标准类别的主要、一元等运算符。

其中一位与会者感到不解,因为在C#标准中,“后缀++/--”被归入了初级运算符的范畴,而不是“前缀++/--”。她造成这种混淆的理由是,她宁愿根据运算符“前缀++/--” 来实现 C++ 运算符“postfix++/--”。换句话说,她宁愿将运算符“前缀++/--”算作主要运算符。 - 我明白她的意思,但我不能给她背后的理由。好的,运算符“postfix++/--”的优先级高于“prefix++/--”,但这是唯一的理由吗?

规范在“14.2.1 运算符优先级和结合性”部分提到了它。

所以我非常中性的问题:为什么 Postfix++/-- 在 C# 中被归类为主要运算符?这其中有更深层次的道理吗?

最佳答案

由于 ECMA 标准本身没有定义“主要”运算符是什么,因此除了优先顺序(即在“一元”之前)之外,没有其他意义。可能选词不当。

考虑到在许多 C-link 语言中,后缀运算符倾向于创建一个临时变量来存储表达式的中间结果(参见:"Prefer prefix operators over postfix" at Semicolon)。因此,它们从根本上不同于前缀版本。

尽管如此,通过快速检查 Mono 和 Visual Studio 如何使用后缀和前缀形式编译 for 循环,我发现生成的 IL 代码是相同的。仅当您使用后缀/前缀表达式的值时,它才会转换为不同的 IL(仅影响放置“dup”指令的位置),至少对于提到的那些实现是这样。

关于c# - 为什么 Postfix++/-- 在 C# 中被归类为主要运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com