|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 有道二级题目,实在不明白,请高手指教
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1139
人关注过本帖
标题:
有道二级题目,实在不明白,请高手指教
只看楼主
加入收藏
pearlangel
等 级:
新手上路
帖 子:15
专家分:0
注 册:2011-8-9
结帖率:
85.71%
楼主
收藏
已结贴
√
问题点数:20 回复次数:13
有道二级题目,实在不明白,请高手指教
执行以下程序时输入1234567,程序的运行结果为()
#include<stdio.h>
main()
{int x,y;
scanf("%2d%21d",&x,&y);
printf("%d\n",x+y);
}
A.17
B.46
C.15
D.9
想问下详细原因,在执行时输入123456起什么作用,x,y的地址在哪儿呀,怎么取值?在下自学c语言,有很多问题不太明白,还希望各位高手多多指教
搜索更多相关主题的帖子:
c语言
2011-08-09 17:27
举报帖子
使用道具
赠送鲜花
laoyang103
来 自:内蒙古包头
等 级:
贵宾
威 望:
19
帖 子:3082
专家分:11056
注 册:2010-5-22
第
2
楼
收藏
得分:3
应该是 %2d%2d
表示一次录入两位数作为一个整数的值
那就是录入了12 34
结果是46
===========深入<----------------->浅出============
2011-08-09 17:34
举报帖子
使用道具
赠送鲜花
loveshuang
来 自:湖北武汉
等 级:
蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
第
3
楼
收藏
得分:3
这个和x,y的地址没有关系,只是限定了x,y读取的值的位数。都设为两位所以依次读两位就OK
2011-08-09 17:51
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
4
楼
收藏
得分:0
回复 3楼 loveshuang
指定要&符号就是要地址,人家问地址怎么回事很正常啊。
授人以渔,不授人以鱼。
2011-08-09 21:10
举报帖子
使用道具
赠送鲜花
小曹
等 级:
论坛游民
帖 子:8
专家分:24
注 册:2010-3-8
第
5
楼
收藏
得分:3
x y 的地址是内存自动分配的, 不同意四楼观点。虽然是取地址符号没错,但是这个地址是无法预知的。楼主的程序是不是有问题?%2d%2ld是长整形还是笔误/
2011-08-09 21:23
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
6
楼
收藏
得分:3
回复 5楼 小曹
读坏书了不是,无法预知的,scanf()要传入地址干嘛?它拿这种地址怎么用的,你知道吗?
授人以渔,不授人以鱼。
2011-08-09 21:25
举报帖子
使用道具
赠送鲜花
loveshuang
来 自:湖北武汉
等 级:
蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
第
7
楼
收藏
得分:0
回复 4楼 TonyDeng
这道题本来就和x,y的地址没有关系啊,xy的存储位置是定义的时候系统分配的,取地址只是为输入函数用。
2011-08-10 00:57
举报帖子
使用道具
赠送鲜花
ai8343512
等 级:
论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
第
8
楼
收藏
得分:3
这个东西怎么说?不好说啊,对于初学者来说,我觉得先记住就行了,这就是scanf输入时的一个特点,也可以看做是一种规定,至少这不妨碍你考过二级考试,看多了就习惯了,要想真正明白为什么会有这个取地址符,应该要学到深入才能真正明白吧。
思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-10 07:54
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
9
楼
收藏
得分:0
楼主自学,能问出这个问题其实很聪明,有学编程的天赋。在程序代码中,同样是自动变量,我们见过x=123这样的赋值,123是常量,储存在某个固定地址中,当将这个地址的值赋给变量x的时候,我们没有使用&x来取x的地址,而是直接就这样写了。但在scanf()函数中,同样是赋值(右边的123是从键盘缓冲区地址取出来的),此时却要用到x的地址&x。这说明两种赋值方式是有区别的,能看得出有区别、问出来,是很敏锐的感觉。正因为是自学,他没有被权威和书本悠忽了,没有用书上教我们scanf()时就是这样写的来自我安慰,有这种寻根究底的精神才是真正的料子。
学习不是为了应付考试,题过了,不表明懂了,这是一个典型的例子。
授人以渔,不授人以鱼。
2011-08-10 09:37
举报帖子
使用道具
赠送鲜花
asdf535463
等 级:
新手上路
帖 子:8
专家分:3
注 册:2011-8-10
第
10
楼
收藏
得分:3
%21d是长整数,1234567经过%2d%21d接收后就为12 34,所以是相加之后为46.
2011-08-10 10:01
举报帖子
使用道具
赠送鲜花
14
1/2页
1
2
快速回复:
有道二级题目,实在不明白,请高手指教
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.067721 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved