我在带有编译器的库中遇到了这个:
register char *bufptr;
register int neg = val < 0;
register long uval = val;
*(bufptr = &tempc[BUFLEN - 1]) = 0;
do {*--bufptr = abs(uval % 10) + '0';} while(uval /= 10);
“* - ”实际上做了什么?我尝试搜索它,但它不包括在我能找到的C引用中,搜索引擎不喜欢“* - ”。
答案 0 :(得分:5)
*--bufptr
相当于*(--bufptr)
,即先递减bufptr
,然后获取它的值。
如果查看precedence table of C operators,那么你会看到递增和递减运算符的优先级高于取消引用运算符。
答案 1 :(得分:1)
它只是一个*和 - 的序列,没有空格;它与*(--bufptr)
相同。