为什么在这个例子中
*p++ = c;
*p 首先等于 c 然后 p 增加 1。我看了this运算符优先级表,它说“=”运算符在 15. 位置,++(后缀)在第一位。这对我来说没有意义。我试过这个的例子:
char in_line[LINELNG];
char *cp;
int c;
cp = &in_line[0];
while((c = getc(stdin)) != EOF){
if(cp == &in_line[LINELNG-1] || c == '\n'){
/*
* Insert end-of-line marker
*/
*cp = 0;
if(strcmp(in_line, "stop") == 0 )
exit(EXIT_SUCCESS);
else
printf("line was %d characters long\n",
(int)(cp-in_line));
cp = in_line;
}
else
*++cp = c;
}
最佳答案
伪代码扩展:
*p++ = c;
相当于
*p = c;
p = p + 1;
同时
*++p = c;
相当于
p = p + 1;
*p = c;
++
确实比 C 中的大多数其他运算符绑定(bind)得更紧密,但它的前/后修复位置决定了 p
中的值发生了什么,并且使用时。
关于c - 为什么++ 运算符不在 = 运算符之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38533599/