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 值??
代码如下:
#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 值??
相关文章推荐
- 关于c++中cin获取字符串的某些问题
- m文件转换为C/C++文件的编译、绘图、参数、打包问题总结
- C++如何获取当前时间并转换成相应的格式字符串.
- c++和windows中获取时间问题
- C/C++编程常见问题(1)-指针转换
- c++中new和delete,delete[]的匹配问题(转载)
- 从易到难编写C++程序,(2)问题:把键盘输入的16,10,8进制数转换为2进制输出
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- C++输入输出重载中的问题(转换IP为二进制)
- 在c++中用while(cin)的问题
- C++中的类对象指针的向上转换问题
- C++: VC6转VC8出现问题:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
- C#调用C++版本dll时的类型转换要注意的问题
- C++ 获取系统时间并且转换成字符串
- Ubuntu Eclipse C++ UTF-8转换 (UTF-8:3字节表示一个汉字的问题)
- 在vs2005里编写C++时出现cstring无法转换为void 的问题
- 解决 C++ Bulider 变量类型转换问题
- C#调用C++版本dll时的类型转换需要注意的问题小结
- 程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
- C++对象类型转换问题概括总结