【问题标题】:Output confusion输出混乱
【发布时间】:2019-05-18 19:48:21
【问题描述】:

输出不应该是:Heo Word吗?因为只要它们不是“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;
       } 
   }

【问题讨论】:

  • 在错误的地方增加了指针。 p++ 应该在 while 循环结束时完成,而不是在条件中。
  • 或者使用 for 循环和 ++p 作为 for 循环头中的最后一条语句:for( ;*p;++p) { if ( *p != 'l' ) cout &lt;&lt; *p; }

标签: c++ arrays pointers char


【解决方案1】:

while 循环条件中的代码已经增加了指针值

while ( *p++ )

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

if ( *p != 'l' )

总是错过第一个字符。

重写这个循环的最简单和最容易理解的方法可能是

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

工作online example

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多