0

这是atoi ( ) 方法的连续,char * cout

我不明白的最后一个问题是:

在第 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

这对我来说没有任何意义。

4

1 回答 1

0

pCur并且pStr都是char*。Achar*通常被理解为 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如预期的那样。

于 2013-03-04T22:59:17.553 回答