c++ 的cin输入和类型通用的问题

代码如下:inta=1;charb='A';cin>>a;cout<<a<<endl;a=b;cout<<a<<endl;输入大写A,结果是165我想问的是,为什么我输入... 代码如下:
int a=1;
char b='A';
cin>>a;
cout<<a<<endl;
a=b;
cout<<a<<endl;
输入大写A,结果是
1
65
我想问的是,为什么我输入A,变量a没接受这个赋值,而char b='A';a=b;却能成功赋值(65),输入的数据是以什么形式什么类型存储的?不是ascii码的形式吗?
我的意思是,一个字节内char类型和int类型是通用的,char b='A';a=b;和我自己输入A有什么区别?我输入的A是什么类型的?
展开
 我来答
sunnyfulin
2011-03-28 · TA获得超过465个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:189万
展开全部
你好:
对于赋值语句“=”及输入流语句“cin>>”的区别你可能没有弄清楚。
赋值语句“=”中间包含了强制类型转换,比如double型赋值给int整型,就会发生数据截断。 而输入流“cin>>”没有此功能,它只要求输入的内容与变量的类型相符即可,若不相符,则此语句为非法(但是并非所有的编译器都报错)。自动忽略此语句。
数据在内存中保存为二进制形式,也即ASCII码,没有错误。
祝你好运!!
这里有狼90
2016-02-22 · TA获得超过3277个赞
知道小有建树答主
回答量:1352
采纳率:35%
帮助的人:230万
展开全部
//自定义控件, 然后在工具箱拖过来用  再把BackColor 设置为Transparent
public partial class TransparentListBox : ListBox
    {
        public TransparentListBox()
        {
            this.SetStyle(ControlStyles.UserPaint, true);
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        }
        protected override void OnSelectedIndexChanged(EventArgs e)
        {
            this.Invalidate();
            base.OnSelectedIndexChanged(e);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            if (this.Focused && this.SelectedItem != null)
            {
                Rectangle itemRect = this.GetItemRectangle(this.SelectedIndex);
                e.Graphics.FillRectangle(Brushes.Green, itemRect);
            }
            for (int i = 0; i < Items.Count; i++)
            {
                e.Graphics.DrawString(this.GetItemText(Items[i]), this.Font, new SolidBrush(this.ForeColor), this.GetItemRectangle(i));
            }
            base.OnPaint(e);
        }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-01
展开全部
兰表达式解析方程!

char *p = new char[2000];

cin>>p;

p写成char*就好了!
p=new char[1000];//向系统申请1000个单元!
cin>>p//输入字符串!

然后判断字符串!

然后比如你准备带入x,y吧,那么x,y值固定了。
用数据结构的逆波兰表达式计算表达这个函数就好了!

至于逆波兰表达式,你可以到网上找,就是数据结构栈的部分,很简单。但很冗长!

我就不写了。你自己好好学习吧。
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenlian4588
2011-03-28 · TA获得超过488个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:75万
展开全部
因为你的a是整型 而cin>>a 你输入A 传了一个字符型 不匹配 这是会返回一个错误的cin 即a也没有被赋值 这时候的cin应该也不能用了。 而a=b则有一个隐形的强制类型转换
追问
按照书上的解释是,字符A和十进制的65的内存存储形式是一样的,都是ascii码,只是类型不同理解也就不同,但是为什么我输入的A却不能赋值65给变量a呢?而char b='A';a=b;却可以?
追答
赋值操作符有提供隐式强制类型转换  cin却没有  输入的类型不匹配就会返回一个错误的不可用的cin
a=b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
河蟹和谐河蟹
2011-03-28 · TA获得超过1156个赞
知道小有建树答主
回答量:1028
采纳率:0%
帮助的人:786万
展开全部
因为A与int类型不匹配
你可以试着把
int a = 1;改为
char a = 1;
试下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式