c - 增量分配

标签 c variable-assignment

我已经使用 C++ 多年,但刚刚意识到增量赋值有些可疑。

我有这个片段

  a = 4; 
  b = 2;
  c = 0;
  c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
  c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
  c +=    a < b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
  c +=    a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
  c +=    a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);

结果是

a: 4    b: 2    c: 1
a: 4    b: 2    c: 1
a: 4    b: 2    c: 1
a: 4    b: 2    c: 2
a: 4    b: 2    c: 3

如果您注意到,前两行是相同的。或者 'c' 在第一个 c = c + a > b 之后没有得到更新; 但是,当我们使用增量赋值 +=

时,c 的值会更新

有什么想法吗?

最佳答案

<优先级低于 + .

c = c + a > b;被解释为 c = (c + a) > b;

就是这样,不需要什么原因,但如果有的话,可能是人们更多地比较算术表达式,而不是在算术表达式中使用比较的结果..

关于c - 增量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532661/

相关文章:

c - 如何在setsockopt - C,Linux中删除TCP_MD5SIG设置的授权?

c - 实现显式空闲列表内存分配

Javascript异步赋值和回调

go - 是否可以在 golang 中使用批量赋值?

c - 在 Struct 中查找项目并编辑它们

c - 使用 ifort/icc 时未定义对 'main' 的引用

java - 如何在 Java 中创建 C 风格的 union 体?

scala - Scala 中是否可以对变量进行元组赋值?

java - 无法通过在方法内调用变量来设置变量的值

c - 尝试分配不兼容的类型时出错