2008年7月31日 星期四

如何讓你的程式更難理解(3)

char * strcpy( char * dst, const char * src ) {
    char * tmp = dst;
    while( *dst++ = *src++ );
    return tmp;
}

3 則留言:

  1. 老實說我看不懂
    while( *dst++ = *src++ );
    是什麼意思?

    你確定不是
    while( *dst++ = = *src++ );

    回覆刪除
  2. if( a = 0 );
    會把a被指定後的結果拿去做評算
    這個例子同義於
    a = 0;
    if( a );

    所以有人會建議
    if( 0 == a );
    的寫法

    回到本文
    while( *dst++ = *src++ );
    的停止條件就是*src指向\0
    指定給*dst後再評算*dst的值
    既是0就跳出迴圈了

    回覆刪除