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

来源:互联网 发布:wan微型端口 编辑:程序博客网 时间:2024/05/02 03:32

哈哈!今天在学习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