关于++,*,=的执行顺序若干问题
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
2)if (*s1++ == '\0')
return (0);
++ 是在何时执行?
tmp = *s1;
++s1;
if (tmp == '\0') return 0;
3) while((*s1++ = *s2++)!= '\0');
这个执行的顺序是什么?
*s1 = *s2
*s2++;*s1++ 是吗?是否到*s1 = '\0'还需要++?
//这个是字符串复制,把s2复制到s1
*s1 = *s2;
tmp = *s1;
++s1;
++s2;
while (tmp != '\0') {
*s1 = *s2;
tmp = *s1;
++s1;
++s2;
}
还有大家能推荐些相关文章或试题吗?我这里太不熟悉了
// 运算符的结合顺序、前++和后++的区别
[解决办法]
不会有你说的 编程环境的不同可能会产生不同的结果 这几行代码 虽然不好看 但是都是符合标准的做法
**c++ 就是 **(c++)没什么危险不危险的
用括号小心括起来 只是好看而已 真面对编程环境的不同可能会产生不同的结果的情况 一点用都没有
[解决办法]
[置顶] C,C++表达式求值顺序 裘老的解释。 [推荐] [C/C++ C++ 语言]