紧急求助,C++,求高手分析,程序错在哪里,++自增自减的问题

我写了这个程序,#include<stdio.h>voidmain(){inta=6;printf("%d",++(++a);}我的意思是让A自增为7,之后再增为8,之后... 我写了这个程序,#include<stdio.h>
void main()
{int a=6;
printf("%d",++(++a);}
我的意思是让A自增为7,之后再增为8,之后输入,然后输出,但是,编译的时候,程序编译出错,之后,我把输入语句的++(++a)改为++a,程序可以正常的执行,我的理解是,我定义一个变量a,之后自增1,存入变量a的存储单元,这样a变为7,之后再存入8,这样我输出的是8,可是,程序中不允许这么做,我查看了有关的书籍,得到的计算过是++的作用是使变量的值增加一,它不能用于常量与表达试,我疑惑的是,为什么会这样,我的思考方向不会错了啊,我定义的A就是变量啊,常量是不和存储的啊,高手帮我分析一下啊
不是计算过,是我得到的结果是,课本是这么分析的:自增自减运算符只能用于变量,不能用于常量或者表达式,5++或者(A+B)++是不正确的,常量的值不能改变,(A+B)++也不能实现,假如(A+B)为5,那么自增后的6没有地方存放,这句话该如何理解啊,求高手帮忙分析,谢谢,我们不过要用5,肯定要先定义一个整型变量,然后赋值5,为什么就不能再自增了,还有(A+B)为什么不能自增,望高手分析一下啊
展开
 我来答
匿名用户
2011-04-08
展开全部
++(++a)
会先计算括号中的++a,它的值是一个常量,也就是a加1后的值7,所以下一步运算就成了++(7),众所周知,++运算符不支持常量(只能对左值作自增自减运算),所以出错,正确作法是写成:

printf("%d",(++a,++a));
追问
我的理解是,定义变量A,把6的值赋予变量A,++a之后,实际上a仍是变量,只不过它的初值由6变为7,++(++A)实际上是对变量a的初值7自增一,变8,我的理解对吗,有什么错误之处啊,我认为,是对变量a赋初值,而不是++(7),应该是++(a),只不过此时的变量的存储位置放的值是7,你怎么认为的啊,高手,分析一下啊
追答
++a之后,a仍然是变量,但是++a这个表达式的值却不是一个变量,而是一个数值,即a加1之后的数值,是一个常量而不再是变量a
天堂的猫咪元首cJ
2011-04-08 · 超过12用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:99.1万
展开全部
你最后那个括号没写
#include<stdio.h>
void main()
{
int a=6;
printf("%d",++(++a));
}

这样子就对了吧?
更多追问追答
追问
不对啊,问题出现在++
追答
可以运行出来呀。。这个 发的图片能看到么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongzunru
2011-04-08 · TA获得超过499个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:222万
展开全部
printf("%d",++(++a);少了一个右括号,改为printf("%d",++(++a));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
327937566
2011-04-08 · TA获得超过110个赞
知道小有建树答主
回答量:194
采纳率:100%
帮助的人:103万
展开全部
因为++a不是一个变量,是一个表达是,++运算符只能跟变量,所以编译错误。
更多追问追答
追问
为什么++后边不能跟表达式啊,分析一下啊
追答
++a相当于a = a + 1; ++(++a) 就是 (a = a + 1) = (a = a + 1)  + 1;你说行不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式