C中val和* p的解释

前端之家收集整理的这篇文章主要介绍了C中val和* p的解释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
int val = 5;

printf("%d",++val++); //gives compilation error : '++' needs l-value

int *p = &val;
printf("%d",++*p++); //no error

有人可以解释这2个案例吗?谢谢.

解决方法

val与(val)相同.由于val的结果不是左值,这是非法的.正如Stephen Canon指出的那样,如果val的结果是左值,则(val)将是未定义的行为,因为s之间没有序列点.

* p与(*(p))相同.由于*(p)的结果是左值,这是合法的.

猜你在找的C&C++相关文章