为什么 C 没有 ||= 运算符或任何其他语言?是有一些技术原因,还是语言美学?
编辑显然 Perl 和 Ruby 有这个,我问的时候不知道。
为什么 C 没有 ||= 运算符或任何其他语言?是有一些技术原因,还是语言美学?
编辑显然 Perl 和 Ruby 有这个,我问的时候不知道。
在 C 语言中,这个运算符完全是无稽之谈。考虑以下示例:
char ind = 0;
ind |= 1;
ind |= 0;
// ind is still 1
这正是要做的事情||=
。对于所有不可转换为 bool 的类型,这无论如何都是愚蠢的。我错过了什么吗?
在所有其他没有类型推断的编程语言中,此运算符仅对布尔值有效。
我冒昧地猜测它没有包含在 c 中(与 |= 不同),因为在 99% 的情况下它不会产生很多收益。|| 是一个布尔运算符。虽然语言中的布尔值是零而不是零,但对整数或 true 指针的赋值实际上应该是什么。1, -1, 42? 它引入了非常多的歧义,并没有太多好处。