弄清楚运算符的优先级,对于一个程序员来说是极为重要的,虽然运算符的优先级是基础知识,但是很多时候我们会因小失大,所以学习一门语言一定要把基础东西弄懂,切不可得过且过!
下面我谈谈两个简单式子,并讨论他们的计算过程
由运算符的优先关系,++的优先级比*高
1.++*p++;
先计算p++,指针要往下移动一位,但注意这时候的++是后自增,所以得在这个表达式执行完p才是真正地向下移动了一位,此时*(p++)=*p,然后才进行前面的++运算,这时候*p的值加上1,所以在下面的例子中,h会加上1变成i;
2.++*++p;
先计算++p,这时候的++是前自增,所以此时的p已经向下移动一位,即已经移动到字符e的位置,*取值之后再进行++号运算,e+1=f,因为第一位h并没有做任何运算,所以值不变。
int main()
{char str[]="hello world";
char *p=&str[0];
char *tem=&str[1];
//第一段代码 输出的值为 ello world i
+