ひやしたです。
何だか本題と外れちゃってますが(笑)
>> void ltostr(char* str, long nn)
>> {
>> char buf[16];
>> int ii = 1;
>>
>> /* 逆さま文字列を作る */
>> buf[0] = '\0';
>> while(nn){
>> buf[ii++] = '0'+ nn % 10;
>> nn /= 10;
>> }
> nn = 1 だったとすると、前半で、
>
> buf[0] == '1' になりますよね。(ii++ 自体の値は 0 だから)
iiの初期値は1ですので、buf[0]=='1'にはならないと思うのですが。
こういうスタイルって可読性悪いのかなぁ・・・。
> でも、しなくても、エミュレータでは「動いてしまう」のが間違いの元と。
それはスタートアップコードの問題ですよね。
そこさえしっかりしていればstatic だろうと初期化済み配列だろうと
そんなに注意しながら使う必要は(個人的には)無いと思います。