TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

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就跳出迴圈了

    回覆刪除