atoi()方法,char * cout II

时间:2013-03-04 22:51:03

标签: c++ while-loop char compare

这是atoi() method, char * cout

Continnum

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

第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

这对我没有任何意义。

1 个答案:

答案 0 :(得分:0)

pCurpStr都是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符合预期。