下面的代码确定真/假
#include <iostream>
using namespace std;
int main(){
char greeting[50] = "goodmorning everyone";
char *s1 = greeting;
char *s2 = &greeting[7];
bool test = s2-s1;
cout << "s1 is: " << s1 << endl;
cout << "s2 is: " << s2 << endl;
if (test == true){
cout << "test is true and is: " << test << endl;
}
if (test == false){
cout<< "test is false and is: " << test << endl;
}
return 0;
}
输出:
s1 is: goodmorning everyone
s2 is: ning everyone
test is true and is: 1
这里什么是线bool test = s2-s1;
实际评估?是它的字符串的长度?如果是这样,那么看到s2比s1小,它应该是负的正确?,但输出是真实的?
另外,如果我将其更改为bool test = s1-s2;
我仍然会得到相同的结果。所以它的负面或积极的将是true
无关紧要?并且只有在0时为假?
s2-s1是什么意思?
-cheers(试图摆脱疑虑的:))
AHK,还什么S2-S1实际上评价?字符串的长度? – silent 2010-06-09 00:31:30
@ sil3nt:它返回两个指针之间的差异。 's1'和's2'只是指针。在这种情况下's2-s1 = 7',因为's2'指向char数组的第七个元素,'s1'指向char数组的第零个元素(开头)。 – 2010-06-09 00:33:11
只是为了澄清一点,指针在下面是真正的整数,它将地址(字节偏移量)保存到内存位置。所以,如果你做指针算术,它实际上是用底层的内存地址(数字)来进行算术。结果是另一个指针(整数),然后隐式转换为bool并分配给'test'。 – Cameron 2010-06-09 01:02:37