1

次のコードは CodeBlocks コンパイラでは問題なく動作しますが、MPLAB C18 コンパイラでは同じ結果が得られません。PIC18 マイクロコントローラを使用しています。

コード

    int d[6];
    int all;

    d[0] = 6;
    d[1] = 4;
    d[2] = 8;
    d[3] = 0;
    d[4] = 0;

    all =  10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] +  d[4];
    printf("%d", all);

CodeBlocks の出力: 64800

MPLAB の出力: -816

正確には何が問題なのですか?このコードは正常に動作するべきではありませんか? ありがとう!

4

2 に答える 2

0

このリンクによると、MCU は 8 ビット システムです。したがって、システムの整数の長さは 16 ビットです。CodeBlocksでコードをシミュレートすると、32 ビット システム (または 64 ビット システム) でコードが実行され、整数のサイズは 32 ビットになります。したがって、同じ結果は得られません。あなたのMPLAPシステムでは整数サイズをオーバーフローしているためです

于 2013-05-06T16:34:44.767 に答える