关于++,*,=的执行顺序若干问题
1) if ((__res = *cs - *ct++) != 0 )
请问++是在 (__res = *cs - *ct)!=0后执行的吗?为什么,不是说在括号里的先执行吗,为何++不执 行?
2)if (*s1++ == '\0')
return (0);
++ 是在何时执行?
3) while((*s1++ = *s2++)!= '\0');
这个执行的顺序是什么?
*s1 = *s2
*s2++;*s1++ 是吗?是否到*s1 = '\0'还需要++?
还有大家能推荐些相关文章或试题吗?我这里太不熟悉了
[解决办法]
1) if ((__res = *cs - *ct++) != 0 )
请问++是在 (__res = *cs - *ct)!=0后执行的吗?为什么,不是说在括号里的先执行吗,为何++不执 行?
tmp = *ct;
++ct;
__res = *cs - tmp;
if (__res != 0) // do sth
tmp = *s1;
++s1;
if (tmp == '\0') return 0;
//这个是字符串复制,把s2复制到s1
*s1 = *s2;
tmp = *s1;
++s1;
++s2;
while (tmp != '\0') {
*s1 = *s2;
tmp = *s1;
++s1;
++s2;
}
// 运算符的结合顺序、前++和后++的区别