全部问题 > 当前问题

正确选项是如何运算的? x+(i++) 我的认为是有()括号 (i++)后的运算就变成 x+1了 所以不是同样跳过了x+0吗??

小逸 2016-3-5 14:11:49

共 9 个回答

嘿嘿大人 2016-3-5 14:32:59

不是你这样分的应该分为x+(i),然后第二步才是i=i+1

小逸 2016-3-5 14:34:36

回复 嘿嘿大人:好吧 括号把我搞晕了  

嘿嘿大人 2016-3-5 14:36:18

回复 小逸:这个自加运算符在后都是要等当前语句执行完来才能自加一,不是先执行括号的部分就自加了

小逸 2016-3-5 14:39:00

回复 嘿嘿大人:不是啊  *P++   可是先P++再接着 * 的

嘿嘿大人 2016-3-5 14:42:29

回复 小逸:我知道,这是运算符的优先级问题,

我说的是++符号在后的自加作用必须等语句必须等到整个语句结束后才体现;

而星号和自加符号优先级两者区别是自加的是地址还是元素

*p++等同的是*(p++),这表达的是这个自加是加的地址,如果是(*p)++,这代表的是p对应地址的元素加一

小逸 2016-3-5 15:02:09

回复 嘿嘿大人:谢谢

嘿嘿大人 2016-3-5 15:02:25

回复 小逸:理解了么?不用谢,加油,嘿嘿

小逸 2016-3-5 15:08:59

回复 嘿嘿大人:恩恩  理解了  

嘿嘿大人 2016-3-5 15:09:22

回复 小逸:那就好,嘿嘿

问题来自: 指针和数组
以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值
#include <stdio.h>
#define N 10
void fun(int x[N])
{ int i=0;
  while(i<N) scanf("%d", _______ );
}
在程序中下划线处应填入的是 ______ 。
A. x+i
B. &x[i+1]
C. x+(i++)
D. &x[++i]
答案:C
解析:由于while循环本身没有自增语句,所以必须在输入的表达式中完成自增,由此排除A、B。而在D中,++i的值时i+1,这使得第一次循环无法取到x[0],只有C符合题意。因此选C。