3

为什么 C 没有 ||= 运算符或任何其他语言?是有一些技术原因,还是语言美学?

编辑显然 Perl 和 Ruby 有这个,我问的时候不知道。

4

2 回答 2

4

在 C 语言中,这个运算符完全是无稽之谈。考虑以下示例:

char ind = 0;
ind |= 1;
ind |= 0;
// ind is still 1

这正是要做的事情||=。对于所有不可转换为 bool 的类型,这无论如何都是愚蠢的。我错过了什么吗?

在所有其他没有类型推断的编程语言中,此运算符仅对布尔值有效。

于 2012-11-14T17:24:09.037 回答
1

我冒昧地猜测它没有包含在 c 中(与 |= 不同),因为在 99% 的情况下它不会产生很多收益。|| 是一个布尔运算符。虽然语言中的布尔值是零而不是零,但对整数或 true 指针的赋值实际上应该是什么。1, -1, 42? 它引入了非常多的歧义,并没有太多好处。

于 2012-11-14T17:11:55.470 回答