您的位置:首页 > 编程语言 > C语言/C++

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

2017-02-26 14:03 197 查看
哈哈!今天在学习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
= '\0';

    while(n-- > 0)

        pstr
= 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 值?? 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: