0

これは、atoi () メソッドの連続体、char * cout です。

The last question I don't understand is:

After line 5,

    while ( pCur >= pStr && *pCur <= '9' && *pCur >= '0' )     {       

Now pCur = 2 and pStr = 242, why the condition is evaluated to be true?

I actually wrote the cout test:

    cout << "pCur: " << pCur << endl;       //line 5
    cout << "pStr: " <<  pStr << endl;  
    bool b = (pCur >= pStr);
    cout << "pCur >= pStr: " << b << endl;

Output:

pCur: 2    
pStr: 242
pCur >= pStr: 1

This doesn't make any sense to me.

4

1 に答える 1

0

pCurpStrは両方char*です。Achar*は、Cスタイルの文字列であると理解されることがよくあります。これは、のnullで終了する配列の最初の文字を指す場合があるためです(多くの場合、そうなります)char。を実行するcout << pCurと、出力ストリームcoutはそれをCスタイルの文字列として解釈し、それが指す文字を出力します。実際のポインタ値を出力する場合は、次のことを試してください。

cout << "pCur: " << static_cast<void*>(pCur) << endl;
cout << "pStr: " << static_cast<void*>(pStr) << endl; 

キャストは、Cスタイルの文字列として扱うことをvoid*やめます。coutきっとあなたはそれpCur >= pStrを期待通りに見つけるでしょう。

于 2013-03-04T22:59:17.553 に答える