看看printf("%d",3*-*p/*q+7);这个输出是什么?
int i=3,j=5,*p=&i,*q=&j;
printf("%d",3*-*p/*q+7);
[解决办法]
6
等价于
int k = 3 *(-3) / 5 + 7 = 6
[解决办法]
6;
printf("%d\n",3*-*p/ *q+7); // ‘/’后面要有个空格
[解决办法]
首先
3*-*p/*q+7
应该是
3*-*p/ *q+7 //要有空格,否则编译器会认为是/*注释,编译通不过
这个相当于
3*(-(*p))/(*q)+7
=3*(-3)/5+7
=-9/5+7
=-1+7
=6
[解决办法]
*优先级最高,然后是一元运算符 -
然后乘除从左向右
最后加。
[解决办法]
应该是6吧,恩,这个表达式跟符号的优先级有关:3*-*p/ *q+7其中*p/*q由于*的优先级大于除号的优先级,所以*p/*q即3/5.又-的优先级高于/所以,是-3/5.就是这样的。
[解决办法]