c语言中指针运算符*和自增运算符++的优先级
#include<stdio.h>intmain(){intvalue=4;int*p_value=&value;printf("(*p_value)++是%d\n",(...
#include <stdio.h>
int main() {
int value = 4;
int *p_value = &value;
printf("(*p_value)++是%d\n", (*p_value)++);
printf("*p_value++是%d\n", *p_value++);
return 0;
}
前后打印出来的一个是乱码,有运行环境的可以运行下,然后指点下为什么不一样 ,谢谢 展开
int main() {
int value = 4;
int *p_value = &value;
printf("(*p_value)++是%d\n", (*p_value)++);
printf("*p_value++是%d\n", *p_value++);
return 0;
}
前后打印出来的一个是乱码,有运行环境的可以运行下,然后指点下为什么不一样 ,谢谢 展开
4个回答
展开全部
#include <stdio.h>
int main() {
int value = 4;
int *p_value = &value;
printf("%d %x\n", value,p_value);
printf("(*p_value)++是%d\n", (*p_value)++);
printf("%d %x\n", value,p_value);
printf("*p_value++是%d\n", *p_value++);
printf("%d %x\n", value,p_value);
return 0;
}
自己观察运行结果就一目了然了。
int main() {
int value = 4;
int *p_value = &value;
printf("%d %x\n", value,p_value);
printf("(*p_value)++是%d\n", (*p_value)++);
printf("%d %x\n", value,p_value);
printf("*p_value++是%d\n", *p_value++);
printf("%d %x\n", value,p_value);
return 0;
}
自己观察运行结果就一目了然了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
附录C C语言运算符优先级和结合性
优先级 运算符 含义 运算类型 结合性
1 ( )
[ ]
->
, 圆括号
下标运算符
指向结构体成员运算符
结构体成员运算符 单目 自左向右
2 !
~
++ --
(类型关键字)
+ -
*
&
sizeof 逻辑非运算符
按位取反运算符
自增、自尖运算符
强制类型转换
正、负号运算符
指针运算符
地址运算符
长度运算符 单目 自右向左
3 * / % 乘、除、求余运算符 双目 自左向右
4 + - 加、减运算符 双目 自左向右
5 <<
>> 左移运算符
右移运算符 双目 自左向右
6 < <= > >= 小于、大于、小于等于、大于等于 关系 自左向右
7 = = != 等于、不等于 关系 自左向右
8 & 按位与运算符 位运算 自左向右
9 ^ 按位异或运算符 位运算 自左向右
10 | 按位或运算符 位运算 自左向右
11 && 逻辑与运算符 位运算 自左向右
12 || 逻辑或运算符 位运算 自左向右
13 ? : 条件运算符 三目 自右向左
14 = += -= *=
/= %= << = >>= &= ^= |= 赋值运算符 双目 自右向左
15 , 逗号运算 顺序 自左向右
优先级 运算符 含义 运算类型 结合性
1 ( )
[ ]
->
, 圆括号
下标运算符
指向结构体成员运算符
结构体成员运算符 单目 自左向右
2 !
~
++ --
(类型关键字)
+ -
*
&
sizeof 逻辑非运算符
按位取反运算符
自增、自尖运算符
强制类型转换
正、负号运算符
指针运算符
地址运算符
长度运算符 单目 自右向左
3 * / % 乘、除、求余运算符 双目 自左向右
4 + - 加、减运算符 双目 自左向右
5 <<
>> 左移运算符
右移运算符 双目 自左向右
6 < <= > >= 小于、大于、小于等于、大于等于 关系 自左向右
7 = = != 等于、不等于 关系 自左向右
8 & 按位与运算符 位运算 自左向右
9 ^ 按位异或运算符 位运算 自左向右
10 | 按位或运算符 位运算 自左向右
11 && 逻辑与运算符 位运算 自左向右
12 || 逻辑或运算符 位运算 自左向右
13 ? : 条件运算符 三目 自右向左
14 = += -= *=
/= %= << = >>= &= ^= |= 赋值运算符 双目 自右向左
15 , 逗号运算 顺序 自左向右
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为指针地址自增之后,打印的是内存一块未分配地区,这块区域内容无法预知。
而先取值后自增,就是值得自增,不是指针地址自增。
而先取值后自增,就是值得自增,不是指针地址自增。
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自增的要高
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询