windows下gcc的问题可以在这问么?
时间:2010-11-05
来源:互联网
先来段代码:
啥时候我也写的出这么漂亮的代码额
我看到的关于while (*s++ = *t++)一句大家比较认可的解释是:
我扩充一下,不知道对不对:
我的问题是:
是这样的吗?如果不是,为什么?
最后弱弱地说一句:我是小菜……
代码:
void strcpy(char *s,char *t)
{
while (*s++ = *t++)
;
}
{
while (*s++ = *t++)
;
}
啥时候我也写的出这么漂亮的代码额

我看到的关于while (*s++ = *t++)一句大家比较认可的解释是:
引用:
(1)*t 的赋值给 *s
(2)判断 *s 是否为真。如果为假,则跳出循环;否则继续执行第(3)步。因为字符串是以\0结尾的,遇到\0的时候,也就是*s为假,就跳出了字符串拷贝。
(3)s 和 t 加 1,指向下一个地址,准备拷贝下一个字符。
(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。
(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)。
2. 根据运算符优先级,后自增运算符的优先级比提领(*)高,所以取出t' 和s' 后应该先对t和s进行自增,然后在取*t' 和*s',
所以正确的顺序应该是(1)(5)(2)(3)(4)。
是这样的吗?如果不是,为什么?
最后弱弱地说一句:我是小菜……

作者: 灰色小狼 发布时间: 2010-11-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28