由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个关于指针的问题
相关主题
请问关于C语言的复杂表达式。怎样判断什么情况下不会出现race condition (转载)
大家帮忙看看这个副作用问题新鲜出炉的Broadcom电话面试题
分享一道最近碰到的很好的面试题。问个C++ delete[]问题
今天G家电面的一道题白痴问题:TreeNode 里面有指向 parent 的指针么?
问个超级小问题请教一道c/c++题 (转载)
这个为啥是undefined behavior?请教一段小程序
分享A公司面经请教一个指针的面试题
一道c++ primer的问题C语言高手帮我看看下面代码,哪里错了啊,谢了
相关话题的讨论汇总
话题: 指针话题: 左移话题: 字符话题: 赋值话题: 51
进入JobHunting版参与讨论
1 (共1页)
s***h
发帖数: 662
1
我在处理一个char array c[], 想把它从某个位置开始,向左移一个字符,这样原来那
个字符就被删掉了。
比如说,c[100], 从51到100向左移一个字符,那么50就被overwrite
假定已经有指针指向c[51], 称为p,实际这个操作等于
while (*p)
{
*p = *(p+1);
p++;
}
这个让我不由会想到
while (*p)
*p = *(++p);
这个不是看起来比刚才那个好看多了吗?不过这样++在执行的时候,也把左边给先改掉
了。所以就突然想弄清楚赋值的时候左右两边的表达式求值的顺序。有哪位给解说一下?
S**I
发帖数: 15689
2
it's undefined behavior

【在 s***h 的大作中提到】
: 我在处理一个char array c[], 想把它从某个位置开始,向左移一个字符,这样原来那
: 个字符就被删掉了。
: 比如说,c[100], 从51到100向左移一个字符,那么50就被overwrite
: 假定已经有指针指向c[51], 称为p,实际这个操作等于
: while (*p)
: {
: *p = *(p+1);
: p++;
: }
: 这个让我不由会想到

i*****e
发帖数: 63
3
*p = *(p++) 应该可以吧
赋值一般是先算右边吧,你这个是++p 和 p++的区别
s***h
发帖数: 662
4

对,这个应该是正解。我刚查了一下The C Programming Language. 里面特意提到了这
个情况。
s[i] = i++;
它的例子和我刚才所提到的是一样的。看来还是基本功不够扎实啊。classic book还是
得多读。:-)

【在 S**I 的大作中提到】
: it's undefined behavior
1 (共1页)
进入JobHunting版参与讨论
相关主题
C语言高手帮我看看下面代码,哪里错了啊,谢了问个超级小问题
请教下个sscanf正则表达式逗号隔开赋值的问题这个为啥是undefined behavior?
面试问了个“master c++”的这个问题,答不出来,直接给枪毙了 (转载)分享A公司面经
大家在编简单的程序时能做到bug free吗?一道c++ primer的问题
请问关于C语言的复杂表达式。怎样判断什么情况下不会出现race condition (转载)
大家帮忙看看这个副作用问题新鲜出炉的Broadcom电话面试题
分享一道最近碰到的很好的面试题。问个C++ delete[]问题
今天G家电面的一道题白痴问题:TreeNode 里面有指向 parent 的指针么?
相关话题的讨论汇总
话题: 指针话题: 左移话题: 字符话题: 赋值话题: 51