« ソニーが無くしてしまったもの… | トップページ | GPLライセンスの恐ろしさ…。 »

2006年1月26日 (木)

『a++;』と『a+=1;』の違いが!分かるかぁい?

たまにCで書くとはまる…。

いつもなら、C++でこんなのを書くのだが…

#include    <stdio.h>
int number_get( char* &string )
{
    int    code, result    = 0;

    while( ( '0' <= ( code = *string ) ) && ( code <= '9' ) )
    {
        if( result != 0 )
            result    *= 10;
        result    += code - '0';
        string++;
    }
    return result;
}
void main( void )
{
    char    string_data[]    = "1234567890string";
    char    *string    = string_data;
    int        number;

    number    = number_get( string );
    printf( "%d,%s\n", number, string );
}

たまには、Cで書いてみるかな…
と思ったのが運の尽き…

#include    <stdio.h>
int number_get( char **string )
{
    int    code, result    = 0;

    while( ( '0' <= ( code = **string ) ) && ( code <= '9' ) )
    {
        if( result != 0 )
            result    *= 10;
        result    += code - '0';
        *string++;
    }
    return result;
}
void main( void )
{
    char    string_data[]    = "1234567890string";
    char    *string    = string_data;
    int        number;

    number    = number_get( &string );
    printf( "%d,%s\n", number, string );
}

あれあれあれ?
まともに動かんぞぉ?
なぜだぁ…?

で、小一時間頭を捻る…。
ここかあぁ!

#include    <stdio.h>
int number_get( char **string )
{
    int    code, result    = 0;

    while( ( '0' <= ( code = **string ) ) && ( code <= '9' ) )
    {
        if( result != 0 )
            result    *= 10;
        result    += code - '0';
        *string    += 1; /* ここだぁ! */
    }
    return result;
}
void main( void )
{
    char    string_data[]    = "1234567890string";
    char    *string    = string_data;
    int        number;

    number    = number_get( &string );
    printf( "%d,%s\n", number, string );
}

あはっあはっあはっあはっあはっ…
ああ、はずかしぃ!

で、タイトルに戻るのですが…
『a++;』と『a+=1;』の違いは、
『a++;』が変数『a』に対して演算されるのに対し
『a+=1;』左辺値の結果に対して演算される。<
でいいのかなぁ…?

そう言えば…

    while( *a++ != 0 );

こんなのを平気で使っていなぁ…
ハッハッ!オマエハ、バカダッタ!』
とか言われそうだ…。

いや、『バカ』でなく『ボケ』です…はい…。(T_T)

|

« ソニーが無くしてしまったもの… | トップページ | GPLライセンスの恐ろしさ…。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/8342414

この記事へのトラックバック一覧です: 『a++;』と『a+=1;』の違いが!分かるかぁい?:

« ソニーが無くしてしまったもの… | トップページ | GPLライセンスの恐ろしさ…。 »