c/c++语言开发共享指针条件while(* s1 ++ = * s2 ++)

int main() { char str1[] = "Overflow"; char str2[] = "Stack"; char *s1 = str1, *s2=str2; while(*s1++ = *s2++) printf("%s", str1); return 0; } 

当这种情况破裂时

 (while(*s1++ = *s2++)) 

请解释逻辑

输出来了

指针条件while(* s1 ++ = * s2 ++)

    *s1++ ,在此变量中, *优先级高于++ 。 在下面的代码中,

     while(*s1++ = *s2++); //There should be a semicolon.Your code does not has. 

    这个while循环依赖于非零在C中的任何条件表达式中求值为true的事实。

    从另一种方式开始,从更明显的方式进行操作,到这种速记,可能更清楚。

    你可以从:

     while(*s2 != '') { *s1 = *s2; s1++; s2++; } 

    这意味着’当s2没有到达终止符时,继续将字符从s2复制到s1。 在每个副本之后向前移动两个指针以准备下一个副本。

    但是,这可以通过将增量操作包含在与副本相同的行中来缩短。 这是安全的,因为它是一个后增量操作。 在副本完成之前,它不会评估。 代码现在看起来像这样:

     while(*s2 != '') { *s1++ = *s2++; } 

    现在,假设非零等于真,我们可以进一步简化。 * s2!=’ 0’本身就相当于* s2。

     while(*s2) { *s1++ = *s2++; } 

    最后,我们可以将副本本身移动到while语句中。 while语句本身会将字符从* s2复制到* s1,然后像以前一样评估* s1。 然后增量发生,然后围绕它。 所以我们的代码看起来像这样:

     while(*s1++ = *s2++); 

    所以..在你的情况下,你的while语句后需要一个分号,否则它将打印多次。

    *运算符的优先级高于++运算符,因为在您的表达式中

     while(*s1++ = *s2++) 

    s1在增量之前首先由s2分配,因此评估的顺序将是

    1. *s1=*s2;

    2. s1++,s2++

    3 printf("%s",str1) ,这里str1的值因操作1而改变

    4.当环到达''时,循环处理条件到来,由于上面指定的*s1=*s2 ,该值被分配给s1, *s1=*s2值变为null => s1=''并且循环得到终止

    这个循环会将str2内容复制到str1

     while(*s1++ = *s2++); 

    如果它会在str2中遇到最后一个字节时停止(这将是0)。

    换句话说, str1[] = "Overflow"将变为str1[] = "Stacklow"


    更新 :更详细的解释。

    请注意,这些是截图中可见的线条。

    之后,遇到0字节并复制到str1 ,因此它变为Stackow ,但是你不打印它。 如果你打印它,它将打印只是Stack

    它会循环,直到遇到s2中的字符串终止符(’ 0’)

     while(*s1++ = *s2++) printf("%s", str1); while(*s1++='S') prints "Sverflow" while(*s1++='t') prints "Sterflow" while(*s1++='a') prints "Starflow" while(*s1++='c') prints "Stacflow" while(*s1++='k') prints "Stacklow" while(*s1++='') ends loop 

      以上就是c/c++开发分享指针条件while(* s1 ++ = * s2 ++)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560440.html

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐