输出混乱

时间:2019-05-18 19:48:22

标签: c++ arrays pointers char

输出不应该是:嘿,字?因为只要它们不是'l',它将打印字母,但是我得到的输出是:eo World?

   #include <iostream> 
   using namespace std; 
   int main() {  
       char str[] = "Hello World\n";  
       char* p = str;   
       while ( *p++ ) {
           if ( *p != 'l' )       
               cout << *p;
       } 
   }

1 个答案:

答案 0 :(得分:3)

while循环条件下的代码已经使指针值增加

while ( *p++ )

因此在循环范围内进行检查

if ( *p != 'l' )

总是错过第一个字符。

重写此循环的最简单,最易理解的方法可能是

 char str[] = "Hello World\n";  
 for (char*p = str; *p; ++p) {
     if ( *p != 'l' )       
         cout << *p;
 } 

工作online example