
请高手教教我下面这道c语言题吧,将感激不尽!!!
以下程序段得输出结果是()inty=7;printf("%d,%d,%d\n",++y,--y,y++);请高手给出详细的解答,不止要结果!!...
以下程序段得输出结果是()
int y=7;
printf("%d,%d,%d\n",++y,--y,y++);
请高手给出详细的解答,不止要结果!! 展开
int y=7;
printf("%d,%d,%d\n",++y,--y,y++);
请高手给出详细的解答,不止要结果!! 展开
6个回答
展开全部
结果是:8,7,7
对于Y++与Y--这类的,自加与自减号在前的话,整个表达式的值为自加或自减后的值,如++Y
这整个的表达式的值为8,而对于单个的Y值,此后也变为8了,再进行--Y,表达的值为自减后的
值为7,对于Y本身变为7了,再进行Y++,对于自加与自减在后面的话,表达式的值将不变,仍为当前的值,7,而对于Y本身又变为8了。明白了吧,
例如:
int y=7;
printf("%d,%d,%d,%d,%d\n",++y,y,--y,y++,y);
结果为:8,8,7,7,8
对于Y++与Y--这类的,自加与自减号在前的话,整个表达式的值为自加或自减后的值,如++Y
这整个的表达式的值为8,而对于单个的Y值,此后也变为8了,再进行--Y,表达的值为自减后的
值为7,对于Y本身变为7了,再进行Y++,对于自加与自减在后面的话,表达式的值将不变,仍为当前的值,7,而对于Y本身又变为8了。明白了吧,
例如:
int y=7;
printf("%d,%d,%d,%d,%d\n",++y,y,--y,y++,y);
结果为:8,8,7,7,8
更多追问追答
追问
可是我在vc6中运行的结果怎么是7,6,6,7,7啊?这到底是怎么回事啊?请高手明示!
追答
不好意思,是我弄错了,学C++都快忘C了,这是一个C的格式问题,与C++有区别;
C规定的,像这样的输出自加减赋值运算要从右往左的,即先进行y++ ---》--y --》++y
想这样的运算,结果还是8,7,7;对于我上面举的那个例子结果应该是8,7,7,7才对;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7,6,7
函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。
根据上面的原理,所以先运算的是第三个,因为是后++,所以先输出,所以第三个是7
再运算第二个,因为是先--,所以是先运算再输出,所以第二个是6
最后运算第一个,因为是先++,所以先运算再输出,所以第一个是7
函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的。
根据上面的原理,所以先运算的是第三个,因为是后++,所以先输出,所以第三个是7
再运算第二个,因为是先--,所以是先运算再输出,所以第二个是6
最后运算第一个,因为是先++,所以先运算再输出,所以第一个是7
更多追问追答
追问
可是对于下面程序结果为10,10,10,11 又怎样解释啊?请高手明示!谢谢!
int i=10;
printf("%d,%d,%d,%d",i--,i++,--i,++i);
追答
因为是从右边运算的,所以第四个++i 值为11,第三个--i 值为10,而后面两个都是后++ 后--所以值不变,都是10
参考资料: http://baike.baidu.com/view/1427555.html?tp=0_11
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7,8,8
++y,是先输出y,后Y+1,所以输出7,同时y=8
--y,是先输出y,然后Y-1,所以输出8,同时y=7
y++,是先对y加1,即y=8,然后输出y,即输出8
所以结果为7,8,8
++y,是先输出y,后Y+1,所以输出7,同时y=8
--y,是先输出y,然后Y-1,所以输出8,同时y=7
y++,是先对y加1,即y=8,然后输出y,即输出8
所以结果为7,8,8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道对不对,如果是从左向右
那么 ++y 输出 8 再然y的值变成8 再--y 输出7 ,y值为7,最后y++ 输出7 y变成8
结果是 8, 7, 7
那么 ++y 输出 8 再然y的值变成8 再--y 输出7 ,y值为7,最后y++ 输出7 y变成8
结果是 8, 7, 7
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
8,7,7,
++y的意思是变量使用前自增(先加1 ,变为8 ,在使用,即打印)
--y的意思是变量使用前减增
y++的意思是变量使用后自增
++y的意思是变量使用前自增(先加1 ,变为8 ,在使用,即打印)
--y的意思是变量使用前减增
y++的意思是变量使用后自增
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询