+ -
当前位置:首页 → 问答吧 → windows下gcc的问题可以在这问么?

windows下gcc的问题可以在这问么?

时间:2010-11-05

来源:互联网

先来段代码:
代码:
void strcpy(char *s,char *t)
{
    while (*s++ = *t++)
        ;
}


啥时候我也写的出这么漂亮的代码额

我看到的关于while (*s++ = *t++)一句大家比较认可的解释是:
引用:
(1)*t 的赋值给 *s
(2)判断 *s 是否为真。如果为假,则跳出循环;否则继续执行第(3)步。因为字符串是以\0结尾的,遇到\0的时候,也就是*s为假,就跳出了字符串拷贝。
(3)s 和 t 加 1,指向下一个地址,准备拷贝下一个字符。


我扩充一下,不知道对不对:
引用:
(1) 取t和s的值t'和s'到内存的某个位置;
(2) 取出*t' 和*s';
(3) *t' 的赋值给 *s';
(4) 判断 *s' 是否为真。如果为假,则跳出循环,否则继续执行(5)步;
(5) s 和 t 加 1。


我的问题是:
引用:
1. 根据运算符优先级,后自增运算符的优先级比赋值高,所以顺序是(1)(2)(5)(3)(4);
2. 根据运算符优先级,后自增运算符的优先级比提领(*)高,所以取出t' 和s' 后应该先对t和s进行自增,然后在取*t' 和*s',
所以正确的顺序应该是(1)(5)(2)(3)(4)。


是这样的吗?如果不是,为什么?

最后弱弱地说一句:我是小菜……

作者: 灰色小狼   发布时间: 2010-11-05