c语言中*a++和(*a)++有什么不同?
展开全部
作为单独的语句,a++;与++a;并没什么区别
但是b = a++;和b = ++a就有区别了
a++这个式子的返回值是a,所以b = a++相当于b = a,然后a = a+1;
++a的返回值是a+1;所以b = ++a相当于a = a+1;然后b = a;
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
展开全部
1,表达式的值不同,++a的值是原a的值加1,a++是原a值
例1
int
a=1,
b;
b=++a;
printf("%d",b);
例2
int
a=1,
b;
b=a++;
printf("%d",b);
2,++a可以做左值,a++不可以
例1
int
a=1,
b=5;
++a=b;
printf("%d",a);
例2
int
a=1,
b=5;
a++=b;/*这里是个编译错误*/
printf("%d",a);
例1
int
a=1,
b;
b=++a;
printf("%d",b);
例2
int
a=1,
b;
b=a++;
printf("%d",b);
2,++a可以做左值,a++不可以
例1
int
a=1,
b=5;
++a=b;
printf("%d",a);
例2
int
a=1,
b=5;
a++=b;/*这里是个编译错误*/
printf("%d",a);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
优先级 () > ++ > *
*a++ 先执行++ 再执行 * 即指针先移动一个位置,在对移动后指针所指位置解引用取值。
(*a)++ 先执行*a 再执行++ 即先对指针所指位置解引用取值,再对这个值自增加1.
*a++ 先执行++ 再执行 * 即指针先移动一个位置,在对移动后指针所指位置解引用取值。
(*a)++ 先执行*a 再执行++ 即先对指针所指位置解引用取值,再对这个值自增加1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
xxx = *a++等价于 xxx =*a;a++;指针移了一位xxx = (*a)++等价于xxx =*a;(*a)= (*a)+1;指针没有移位,内容加1了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hahugo88的回答很正确,这个意义必须掌握好哦!
我就是因为这个概念模糊考试丢了10分
我就是因为这个概念模糊考试丢了10分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询