- 论坛徽章:
- 0
|
刚86楼写过了,发现写错了几个关键字,不好意思!
原因看以下几个程序:
#include<stdio.h>
void main()
{
char *ptr = \"csdn\";
printf( \"%c\\n\", *(ptr++) );
printf( \"%c\\n\", *ptr);
/*输出结果为:c
s
因为后缀自增操作符的返回结果是自增前的左值,或者说后缀自增符是先使用左值再加一
*/
}
#include<stdio.h>
void main()
{
char *ptr = \"csdn\";
printf( \"%c\\n\", *ptr++);
printf( \"%c\\n\", *ptr);
/*输出结果为:c
s
因为后缀自增操作符的返回结果是自增前的左值,或者说后缀自增符是先使用左值再加一
且后缀自增符的操作优先级高于指针符(后缀操作符高于所有单目操作符),也就是*ptr++和*(ptr++)是完全等价的
*/
}
#include<stdio.h>
void main()
{
char *ptr = \"csdn\";
printf( \"%c\\n\", *(++ptr) );
printf( \"%c\\n\", *ptr);
/*输出结果为:s
s
因为前缀自增操作符的返回结果是自增后的值,或者说前缀自增符是先加一再使用
*/
}
#include<stdio.h>
void main()
{
char *ptr = \"csdn\";
printf( \"%c\\n\", *++ptr );
printf( \"%c\\n\", *ptr);
/*输出结果为:s
s
因为前缀自增操作符的返回结果是自增后的值,或者说前缀自增符是先加一再使用
且前缀自增符和指针符为同优先级操作符(都是单目操作符),但是右结合,所以还是先算前缀自增再取指针
也就是说*(++ptr)和*++ptr是完全等价的
*/
} |
|