#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int test = 9;
char a[256], b[256];

itoa( test, b, 10 );

if ( test < 10 )sprintf( a, "0%s" ,b );// 1
else strcpy( a, b );//

( test < 10 ) ? sprintf( a, "0%s" ,b ):// 2 (※)
strcpy( a, b );//
printf( a );
}

2 の部分でエラーが出るのはどうしてですか?
ほぼ同じ処理をしているはずだと思っていたのですが。
戻り値の問題かなぁ、と思って、strcpy( a, b ),0; としてみても、結果は同じでした。
コンパイラはVC6.0です。