首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

*bufptr++ = c怎么解释

2012-10-16 
*bufptr++ c如何解释?#define N 1024static char buffer[N]static char *bufptr*bufptr++ c最后一

*bufptr++ = c如何解释?
#define N 1024
static char buffer[N];
static char *bufptr;

*bufptr++ = c;
最后一句,c陷阱与缺陷里面讲,他的意思是“先把c放到缓冲区中,然后指针增加1,又指向缓冲区中的第一个未占用的字符”,我理解的是:先把c赋给*bufptr,然后bufptr自增1.

问题如下:
1,我理解的是否正确;
2,按照运算符的优先级,应该是(*bufptr)++ = c
3,推而广之,a = b++和a = ++b到底怎么回事,我当然知道计算结果,只是不知道如何怎么给出合理解释。

[解决办法]

探讨
引用:
不要依赖于表达式的求值顺序,用简单的语句表明自己的意图,容易读,容易写,容易维护。

C/C++ code

*bufptr = c;
++bufptr;


或者
[code=C/C++]
++bufptr;
*bufptr = c;
[code]


没必要 可以LZ的写法 经得住考验

[解决办法]
关于优先级的表述中,真正按照语法定义来的话应该是
后置操作符“优先于”前置操作符----看K&R C的附录语言定义部分--
所以后置++“先且只”作用于bufptr----因为后置++的原因,等表达式完成再++

但++又可以前置、后置不分,理解为单目操作符,用单目操作符的右结合来“记忆”----相邻的两级
前置*和后置++都是单目操作符,右结合则++先----看K&R C的正文

后置操作符有:
[],(),.,->,++,--
注:()是函数调用操作符。
这里也涉及到两个操作符的记忆:
最高级的括号(),如(x+y)*y----
和函数调用操作符,如printf()----
应该分在两级,但放在一级也不会混淆----上下文(前后文字)不同

热点排行