这个问题是对C 中什么是 &&& 操作的回应,这让我想到&
将其用作二进制 AND 和地址。
为什么这两个非常不同的任务使用相同的符号?当考虑它时,@
似乎是一个更好的地址符号。
我不认为它在实践中会引起很多问题,因为编译器可能会捕获大多数错误使用,但是可能会创建涉及宏的代码,看起来它正在执行二进制 AND 而实际上它正在执行寻址.
这个问题是对C 中什么是 &&& 操作的回应,这让我想到&
将其用作二进制 AND 和地址。
为什么这两个非常不同的任务使用相同的符号?当考虑它时,@
似乎是一个更好的地址符号。
我不认为它在实践中会引起很多问题,因为编译器可能会捕获大多数错误使用,但是可能会创建涉及宏的代码,看起来它正在执行二进制 AND 而实际上它正在执行寻址.
我认为没有什么大的理由可以将它用于两种不同的事物。
幸运的是,该语言没有歧义,因为一种用途是一元运算符,另一种是二元运算符(即有两个操作数)。* 同上(乘法或取消引用)。
@
不用于“地址”的原因(正如您建议的那样是一个不错的选择)是该字符不是ISO 646 字符集的一部分,该字符集实际上在 C 的早期使用。
虽然确实 C 的设计者可以使用@
并为其设计一个三元组序列,但我怀疑他们觉得这不值得这么麻烦。&&&
可以出现在人们的代码中的事实可能不足以被认为是选择不同运算符符号的理由。