Modern Clang Chapter-04
/
两个整数相除, 结果为被截断的整数;
%
要求必须为两个整数的运算;
c 语言中, =
是运算符, 右结合. v=e
的结果为e, 副作用是把e的值赋值给v.
i=j=k=0
即 i=(j=(k=0))
; i += j += k
即 i += (j += k)
, 不推荐.
i++
结果是 i, 副作用是 i 自增;
++i
结果是 i+1, 副作用是 i 自增;
k = ++i + j++
即 i=i+1; k=i+j; j=j+1;
k = i++ + j++
即 k=i+j; i=i+1; j=j+1;
++/--
优先级 高于 一元的+/-
;
clang 没有定义子表达式的求值顺序, 所以不要在子表达式中使用赋值运算符.
a[i++] = a[i++] + 100
i是加一次还是两次是未定义的.
i *= j + 1
=> i *= (j + 1)