标题:关于计算机数据内存分配问题
只看楼主
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
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372898-1-1.html




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

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