| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:关于计算机数据内存分配问题
只看楼主 加入收藏
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
结帖率:79.41%
收藏
已结贴  问题点数:20 回复次数:5 
关于计算机数据内存分配问题
那个大虾知道为啥输入一个汉字,一个字符比如a,或者大与2^31-1大的数,结果会是死循环啊,计算机内存分配倒底是啥样的,困惑啊。还有,我输入汉字,字符,不管是一个还是多个,都输出无数个2,OMG,到底是啥情况啊。如果有懂得更多的,欢迎多给小妹讲啊。。。。

#include<iostream.h>
#include<conio.h>
int main()
{
    int a;
    while(1)
    {
    cin>>a;
    cout<<a<<endl;
    }
  getch();  
return 0;   
}
搜索更多相关主题的帖子: include 汉字 
2012-07-06 21:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:10 
int a;
cin>>a;
只要你输入不是int的东西,那么cin就出错了

此时,你应该清空输入缓冲区的内容,清除cin的错误标识,然后才可以再次使用cin输入
2012-07-07 08:16
时光机
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-7-8
收藏
得分:10 
geich() 干嘛用的
2012-07-08 13:49
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 2楼 rjsp
这样啊~~~~可是我还是觉得困惑~~~~对计算机内部机制更加好奇了
2012-09-01 20:44
hedaacm
Rank: 6Rank: 6
来 自:河北保定
等 级:侠之大者
威 望:2
帖 子:400
专家分:418
注 册:2012-1-26
收藏
得分:0 
回复 3楼 时光机
http://baike.baidu.com/view/751663.htm
这个问题,度娘给你答案
2012-09-01 20:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用hedaacm在2012-9-1 20:44:36的发言:

这样啊~~~~可是我还是觉得困惑~~~~对计算机内部机制更加好奇了

最近论坛逛的不勤,经常错过一些有意思的问题耶。

过程大概是这样的:
cin >> a 的时候,因为知道 a 是一个 int,所以 cin 会调另外一些函数从输入流里抽取字符串,并把它转成一个 int 给 a 赋过去。
转的过程大概是这样,判断第一个字符是不是 + 或者 -,并以此确定数字的正负。之后顺次读取并查验是不是 0-9 这些数字,如果是拿来用于计算,如果不是就停止读取,把值给 a 赋好,报告读取成功,然后返回它在输入流中用了多少字符,之后把它们从输入流中抽出。没用到的字符依然留在输入流里。
如果转换的过程出错了,比如数值过大发生溢出,或者是根本就没看到数字。会抛出异常,或者在流里设置错误。出错的流如果你不主动清除错误,下次再读取会直接出错返回,以免把输入流里重要数据遗漏掉。
2012-09-21 21:07
快速回复:关于计算机数据内存分配问题
数据加载中...
 
   



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

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