『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)
| 固定リンク
コメント