为什么`&`用于C中的二进制AND和地址?

Leo*_*Leo 6 c syntax

这个问题是为了回应C中的什么是&&&操作让我想到&被用作二进制AND和地址.

为什么这些非常不同的任务使用相同的符号?在考虑它时,@似乎是一个更好的符号.

我不认为它会在实践中引起太多问题,因为编译器可能会捕获大多数错误的用法,但它可能会创建涉及宏的代码,看起来它正在执行二进制AND而它实际上正在执行地址.

tom*_*tom 7

我认为没有什么大的理由可以用于2种不同的东西.

幸运的是,语言中没有歧义,因为一个用法是一元运算符而另一个是二元运算符(即有两个操作数).同上*(乘法或取消引用).


Ray*_*oal 7

原因@不是用于"地址"(正如你所建议的那样是一个不错的选择)是该字符不是ISO 646字符集的一部分,它实际上是在C的早期使用的.

虽然C的设计师确实可以使用@并设计一个三字符序列,但我怀疑他们觉得这不值得麻烦.&&& 可能出现在人们代码中的事实可能不被认为足以选择不同的运算符符号.