level 10
下面代码的执行结果,不许翻书,不许度娘
#include <iostream>
#include <string>
using namespace std; int main()
{
string s1;
string s2("hello");
string s3(" world");
cout<<sizeof(s1=s2+s3)<<endl;
cout<<s1<<endl;
return 0;
}
2012年11月16日 11点11分
1
level 9
我属于超级菜鸟。应该是11和hello world,我想应该是吧……
2012年11月16日 13点11分
4
hello world亮了。
2012年11月16日 13点11分
回复 RichSelian :……,原来是空的,原来cout<<sizefo(s1=s2+s3)不能算初始化啊
2012年11月16日 13点11分
回复 binxuan7 :首先,就算执行了s1=s2+s3,这也不算初始化,只能算赋值,初始化和赋值是两码事;第二,sizeof(表达式) 这个表达式不被执行,而只是判断一下表达式的结果是什么类型
2012年11月17日 01点11分
sizeof不能计算字符串长度的,sizeof是关键字不是函数,sizeof表达式编译后都会转换为常数,所以不可能输出11,输出的是string类所有成员变量的总内存大小。
2012年11月17日 05点11分
level 6
回复1楼:是4 和空行(‘\0’)吗?要按自己写string类会有‘\0’,不过string好像没有’\0’
2012年11月16日 14点11分
7
这个不定的吧,g++下是8
2012年11月16日 15点11分