| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:这程序感觉乱七八糟,求大神指教,为什么选A?
只看楼主 加入收藏
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
结帖率:82.93%
收藏
已结贴  问题点数:5 回复次数:9 
这程序感觉乱七八糟,求大神指教,为什么选A?
下列程序的输出结果是()
#include<stdio.h>
void fun(int);
void main()
{
   int x=1;
   if(x==1)
    {
       int x=2;
        fun(x);
        printf("%d",--x);
        fun(x);
     }
}
void fun(int x)
{
  printf("%d",x++);
}
A.2,1,1   B.1,2,1   C.2,2,2   D.2,2,1
搜索更多相关主题的帖子: fun 
2013-03-25 16:49
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
输出应该是211 哪来的逗号。。。

牵扯x++ ++x的区别 C语言参数传递 还有 呃 变量作用域(?) 的知识 建议您认真看书罢
2013-03-25 16:53
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
回复 2楼 zklhp
逗号只是为了便于区别,没别的意思。
另外,最后一个1怎么得出来的,表示不解。希望指教。
2013-03-25 16:56
Time_out
Rank: 1
等 级:新手上路
帖 子:12
专家分:8
注 册:2013-3-13
收藏
得分:0 
输出的三个结果是这样得来的
1、fun(x)  printf("%d
fun(x);//printf("%d",x++);此处的x输出为2,这个想必楼主知道
printf("%d",--x);//这里x的值还是2,但是输出--x,楼主也懂
fun(x); //我想问题在于这里,请注意形参的意义,形参值的改变并不会影响实参的值。也就是说main函数里面的x与fun函数里面的x是不一样的。这里输出的是实参的值,所以还是1
")

/*******************/
Pri.->Linux && C
叫我华仔就好了。
/*******************/
2013-03-25 16:57
Time_out
Rank: 1
等 级:新手上路
帖 子:12
专家分:8
注 册:2013-3-13
收藏
得分:0 
回复 4楼 Time_out
噢...我后面的解释稍微有点不正确,但是理解是正确,楼主你懂了吗?

/*******************/
Pri.->Linux && C
叫我华仔就好了。
/*******************/
2013-03-25 17:00
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
不要被题目迷惑了,基础概念很重要
程序中定义了两个 x ,注意这两个 x 是不同的变量,外部的 x 被内部的 x 所屏蔽,所以在本程序中不起任何作用,仅仅是出题人对你是迷惑

#include<stdio.h>
void fun(int);
void main()
{
   int x=1;     //这里定义的x毫无意义,整个程序没用到,外部变量;
   if(x==1)
    {
       int x=2; //程序运行的x实际上一直是这里定义的,内部变量;
        fun(x); //输出2
        printf("%d",--x); // x,仍然等于2,输出 1,因为--x是先自减再投入运算的
        fun(x);           //输出 1,因为上面的 x 先自减了
     }
}
void fun(int x)
{
  printf("%d",x++); //不要被输出语句里面的 x++ 迷惑,x++是先把x投入运算再自加,但这里的自加毫无意义,因为 fun 函数并没有返回值,
                      只起到打印作用,所以x自加后的值并不返回给 if 语句里面的 x,也就是说 x 仍然等于 2;
}

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 17:19
neilchen226
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-3-25
收藏
得分:0 
回复 楼主 abc594986308
x++,--x都是在语句执行完之后再自加自减的...
在调用函数结束后x的值不会影响主函数的值
2013-03-25 17:21
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 7楼 neilchen226
   你定义的?  
对于自加和自减,符号前置的话是先自加(减)后运算,  后置是先运算后自加(减)

三十年河东,三十年河西,莫欺少年穷!
2013-03-25 17:23
neilchen226
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-3-25
收藏
得分:0 
回复 8楼 韶志
呵呵...新手
2013-03-27 18:05
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 9楼 neilchen226
   大家都是互相讨论,能学到东西当然最好

三十年河东,三十年河西,莫欺少年穷!
2013-03-27 19:13
快速回复:这程序感觉乱七八糟,求大神指教,为什么选A?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016876 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved