gpt4 book ai didi

c++ - 在 C(也是 C++)中, '&' 运算符如何同时用作地址运算符和按位运算符?由于 C 不支持运算符重载

转载 作者:行者123 更新时间:2023-12-01 14:35:47 25 4
gpt4 key购买 nike

运算符'&'可以在以下两种方式中使用 int a; scanf("%d",&a);printf("%d",1&2)。但不同的行为(第一次作为地址运算符,第二次作为按位运算符)。我知道 C 中没有运算符重载。那么它是如何工作的?也为 c++ 突出显示。

最佳答案

I know operator overloading is not there in C.

这是不正确的。如果ab是整数,a + b执行整数加法,a的浮点加法>b 是 float ,如果ab 是指针,则指针运算。

C 在语言中内置了运算符重载。它不支持程序定义的自定义运算符重载。

& 是获取地址和执行按位与的运算符的情况下,区别在于语言语法。获取地址的 & 只能出现在语法中的 cast-expression 上。 & 用于按位 AND 只能出现在 AND 表达式 之后和 equality-expression 之前。这些“标记”(cast-expressionAND-expressionequality-expression)对你来说可能不熟悉,但它们是正式定义的在 C 语言的语法中,当编译器解析源代码时,它会识别表达式的结构并将源代码与语法的标记匹配。这对于 C++ 也是如此,除了一个微小的技术差异:在 C++ 中,其中一个标记是 and-expression 而不是 AND-expression

语法的定义使得对这些标记的识别始终唯一地区分 & 运算符的使用方式。

关于c++ - 在 C(也是 C++)中, '&' 运算符如何同时用作地址运算符和按位运算符?由于 C 不支持运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63099784/

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