字符串长度是指字符串含有几个字符,字节是指数据存储的空间大小,
32位系统中int型数据一般是4个字节;
你给的题中,a
+
b
=
1
2
\n这是7个字符
string 是一个类 不是数据类型
string的实现在各库中可能有所不同,但是在同一库中相同一点是,无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。
有sizeof()为12、32字节的库实现。 但是VC6.0测试后sizeof(string)=16.还是跟编译器有关。
首先看一下sizeof在msdn上的定义:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
看到return这个字眼,是不是想到了函数?错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的吗?sizeof可以,所以sizeof不是函数。网上有人说sizeof是一元操作符,但是我并不这么认为,因为sizeof更像一个特殊的宏,它是在编译阶段求值的。举个例子:
cout<
cout<<4<
int a = 0;
cout<
int a = 0;
cout<<4<
结论:不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。
分别是字符'\t'
'\v'
'\\'
之后由于字符串结束标记'\0'的存在,所以之后的不算有效字符了