cout<<("four"+2+1);输出“r”?
2012-03-07 20:50
253 查看
今天有同学问我一个小的测试程序,对结果很是疑惑
#include <iostream> #include <string> using namespace std; void main() { string str ="four" + 2; cout<<str<<endl; cout<<("four"+2+2)<<endl;//在C++中正常的连续输出应该写成cout<<"four"<<2<<2<<endl;若要进行计算则直接写cout<<2+2;将输出4 }
运行结果如下:
我看了之后第一感觉也是不可思议,仔细一看,怀疑在cout之后的“+”被重载了,“+2”即右移两位,所以输出“ur”和空。
将string str ="four" + 2;改成string str ="four" + 1;后果然输出“our”。
以上仅是自己的一种解释,希望有这方面官方资料或者明白其中原理的朋友分享一下!
相关文章推荐
- 用mingw编译C++工程;程序里面的cout<<"aaa";cmd运行c++程序,aaa内容在控制台不显示,如何将aaa输出到控制台屏幕并将控制台内容写到一个文件中。
- C++初始化,之不明白篇 cout<<x<<endl 与 cout<<"x = "<<cout<<x<<endl的输出的值会不一样
- cout 堆栈,operator<< 运算符重载输出问题
- c++ cout控制输出 &lt;转&gt;
- 重载输出操作符("<<")时遇到的问题
- <c:forEach var="credit" items="${creditVOList}" varStatus="status">输出序列在页面显示 form表单
- JQuery AJAX 加载 HTML代码“<”形式的。怎么解析成"<"形式,并且把"<img>"解析成图片输出到浏览器中。
- ostream_iterator<int> output(cout ,"*"); 的理解
- cout 堆栈,operator<< 运算符重载输出问题
- 小议 cout << i << " " << i++ << endl
- C语言-cout<<"123"<<"45"<<endl;
- 关于ostream_iterator<int>(cout," ")的理解
- cout<<格式输出的使用
- main() { int a[3][3],*p,i; p=&a[1][1]; for(i=0;i<4;i++) p[i]=i+1; printf("%d\n",a[1][2]); } 求输出
- 短小的日志类 和用cout&lt;&lt;"A"&lt;&lt;B&lt;&lt;"/n"一样
- 相对printf(),对于多线程的cout<<输出乱码的问题
- copy(dist.begin(), dist.end(), ostream_iterator<int>(cout, " ")); cout << endl; 这句话是什么意思
- hdoj1707(set)(s[day][time].insert(name))(cout<<" "<<*it)
- cout<<endl;与cout<<"/n";的区别
- 数据库字段内容存在'、"、>、<等特殊字符,转义html字符输出