关于C语言指针自增运算的问题
答案:2 信息版本:手机版
解决时间 2019-10-06 22:02
已解决
2019-10-06 03:49
#include
main()
{int a[]= {1,2,3,4,5,6,7,8,9} , *p;
p = &a[1];
printf("%d\n" , *p);//2
p = p +1; printf("%d\n", *++p);//4
p = p +1; printf("%d\n", *p++);//5
p = p +1; printf("%d\n", *(++p));//8
p = p +1; printf("%d\n", *(p)++);//9
}
运算结果如上 求结果为5 8 9的是怎么运算出来的
例如p = p +1; b = *(++p); printf("%d ,%d\n", b , *(++p)); 打印出的结果为 4和5 ,竟然不一样
最佳答案
2019-10-06 04:49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
这写操作等价:*++p、*(++p),都是p加,然后*
这些操作等价:*p++、*(p++)、*(p)++,相当于先*了,然后p再+
#include
main(){
inta[]= {1,2,3,4,5,6,7,8,9} , *p;
p = &a[1]; //p指向2
printf("%d\n", *p); //*,2
p = p +1; //p指向3
printf("%d\n", *++p); //p指向4,再*,4
p = p +1; //p指向5
printf("%d\n", *p++); //*,5,p指向6
p = p +1; //p指向7
printf("%d\n", *(++p)); //和*++p一样,p指向8,再*,8
p = p +1; //p指向9
printf("%d\n", *(p)++); //和*p++一样,9,再加,p指向10
}
全部回答
1楼
2019-10-06 06:04
c语言的前置++和后置++,称为自增运算符
如果单独写 自增运算符为一个语句,二者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是如果把自增运算符写入到另外表达式中二者就有很大区别了。
例如
1、
i=5;
j=i++;此处表达式等价于“j=i;i=i+1;”两条表达式。
执行后i为6,j为5
2、
i=5;
j=++i;此处表达式等价于“i=i+1;j=i;”两条表达式。
执行后i为6,j为6
注:通过上述例子,可以看出运算顺序产生了区别,导致了输出结果产生不同。
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯