c++ char/int cin获取转换不匹配问题,

哈哈!今天在学习C++语言时看到一个很有意思的问题,以下个人见解(有可能是错的,知道的帮忙提供正确的意见。

代码如下:

#include<iostream>
char *buildstr(char c,int n);
int main()
{
    using namespace std;
    int times;
    char ch;
    cout << "Enter a character:";
    cin  >> ch;
    cout << "Enter a integer";
    cin  >> times;
    char *ps = buildstr(ch,times);
    cout << endl;
//    cout <<"Count for print" << times << endl;  //此语句可以影响结果的产生与输出,是否可通过Cout 输出流,将char类型转换到int ??
        cout << ps << endl;
    delete [] ps;
    ps = buildstr('+',20);
    cout << ps <<"-Done-"<< ps <<endl;
    delete [] ps;
    return 0;
}
char *buildstr(char c,int n){
    char *pstr = new char[n+1];
    pstr[n] = '\0';
    while(n-- > 0)
        pstr[n] = c;
    return pstr;
}

采用linux 编译后:g++  -o  buildctr   buildctr1.cpp,

执行:./buidctr

结果如下:

$ ./buildctr
Enter a character:a
Enter a integer10
aaaaaaaaaa
++++++++++++++++++++-Done-++++++++++++++++++++

如果将Enter a interger 的输入更改为一个字符,所产生的结果为:

Enter a character:a
Enter a integera

结果如图片所示.

a值对应ASCII码为:97,而结果所产生的字符已超过97,

初步分析为,cin在获取int 字节时所对应值为4 bytes ,而char 为1bytes ,是否cin 会通过获取其他3bytes无效值来满足4bytes的int 值?? 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值