c++的表达式

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:23:16
下列表达式中正确的有()
A:--k--
B:-k++
C:(-k)++
D:(--k)--
为什么b,d是正确的,而a,c是错误的,请解释下

a 不会解释,但知它是错的
c (-k)表达式无值,无法进行后续计算,所以是错的

b -不起作用,可以通过编译,即使是 -s;也能通过编译
d 有先后次序,是可以正常计算的

C:(-k)++
D:(--k)--
c 先执行 -k等价 m=(-k) 但是没有变量m来存放 -k 的结果 也就无法执行后面的 ++了
用m=(-k) ,m++ 才可以
而 d 限制性 --k 等价 k=k-1; 这样有k来存放 --k 的结果 在执行 k-- 就可以了

A:--k--
B:-k++

b 先执行 k++ k的值变为k=k+1但是参与表达式运算的k值为原k不是k+1(k++的性质),是表达式执行 -k 于是可以执行.
而 a 由于c++操作符的优先级与结核性 知道 先执行 k-- 返回右值 ,不能在进行左值运算.

A --k-- //是(--k)再自减呢还是先--(k--)呢