组合复合运算符

标签 c operators

在为像 Arduino 这样的微型计算机编程时,我只是 C 的临时用户,但我有兴趣加深对本地语言的理解。

我知道您可以将 x = x % 10 简写为 x %= 10,将 x = x + 1 简写为x += 1。但我无法集中精力将这两个部分结合起来:

x = (x + 1) % 10

如果可能的话,它看起来像什么? (x += 1) %= 10 ?这似乎...如果没有错,那就令人困惑。

最佳答案

表达式 (x += 1) %= 10 在 C 中是不合法的。赋值运算符的结果,无论是 = 还是复合赋值运算符之一, 不是左值。笼统地说,这意味着它不能出现在作业的左侧。

该声明必须分为两部分:

x += 1;
x %= 10;

顺便说一句,(x += 1) %= 10 在 C++ 中有效。

关于组合复合运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55203364/

相关文章:

C:如何构建 line_buffer 才能不被覆盖?

c++ - 如何使用curl准备http缓冲区

c - 如果不同的数据类型作为参数,运算符的结果是什么? (C)

ios - Swift:与点 (".") 文字相关的自定义运算符的优先级

javascript - Node.js 中的 <!-- 运算符是什么?

C:地址运算符 (&) 产生一个指针(地址 + 类型)还是只是一个地址?

c - *列表和**列表之间的区别

c - Float32 到 Float16

rust - 我应该在新类型上实现 AddAssign 吗?

java - 位或运算符以不同方法工作的详细解释