首先,你需要知道++i 和 i++ 有什么区别?.
在您的情况下,您希望:
- 读你
data
的head
- 移动你的
head
- 返回读入 1 的值。
所以,在代码中它看起来像这样:
char testclass::read() {
char result = data[head]; // 1
head += 1; // 2
return result; // 3
}
现在,您可以使用++head
orhead++
代替head += 1
此处。它不会改变你的函数的行为,因为这个语句的结果没有被使用(即你可以做x = y += 1;
但可能不想做。)
如果你愿意,你可以在一行中编写这个函数,但会失去可读性(通常最好一行一行只写一个语句,这样更不容易出错):
return data[head++];
这是有效的,因为head++
增加变量但返回其“旧”值。
但是不要认为三行代码更快:您的编译器足够聪明,可以优化它,并且很可能会为两种实现生成相同的汇编代码。
关于函数的第一个版本,不要忘记 return 语句后的代码没有执行。(例如,在 c++ 中访问 return 语句后,请参阅此 SO Execution of code in a function after the return statement has been accessed)