C语言:*和++操作
下面的操作会输出什么?为什么?
- 后置++
#include<stdio.h>
int main(void)
{
char *ptr = "Linux";
printf("\n [%c] \n",*ptr++);
printf("\n [%c] \n",*ptr);
return 0;
}
答:输出结果应该是这样:
[L]
[i]
详解:
*和++运算优先级相同,且是右结合,所以 *ptr++ 等同于 *(ptr++);
后置++表示先运算后++,所以 *(ptr++) 相当于 *ptr;ptr++;
- 前置++
#include <stdio.h>
int main (void)
{
char *ptr = "Linux";
printf("0.[%c]\n",*ptr);
printf("1.[%c]\n",*++ptr);
printf("2.[%c]\n",*ptr);
return 0;
}
答:输出结果应该是这样:
[L]
[i]
[i]
详解:
前置++一般比较容易理解,先++,再运算,即*++ptr = * (++ptr);