我不明白的最后一个问题是:
第5行之后
while ( pCur >= pStr && *pCur <= '9' && *pCur >= '0' ) {
现在pCur = 2且pStr = 242,为什么条件被评估为真?
我实际上写了cout 测试:
cout << "pCur: " << pCur << endl; //line 5
cout << "pStr: " << pStr << endl;
bool b = (pCur >= pStr);
cout << "pCur >= pStr: " << b << endl;
输出:
pCur: 2
pStr: 242
pCur >= pStr: 1
这对我没有任何意义。
答案 0 :(得分:0)
pCur
和pStr
都是char*
。 char*
通常被理解为C风格的字符串,因为它可能(并且经常)指向空终止数组char
中的第一个字符。当您执行cout << pCur
时,输出流cout
会将其解释为C样式的字符串,并打印出它指向的字符。如果要打印出实际指针值,请尝试以下操作:
cout << "pCur: " << static_cast<void*>(pCur) << endl;
cout << "pStr: " << static_cast<void*>(pStr) << endl;
转换为void*
会阻止cout
将其视为C风格的字符串。我打赌你现在会发现pCur >= pStr
符合预期。