2017-12-11 14 views
0

私は100,000から10,000の間の数値をとり、それぞれの数値をキューに入れようとしています。Arduino Unoでlong intを使用する

私はこれを行うためにモジュラス関数を使用します。しかし、私は宇野の16ビット整数に関する問題に遭遇しています。これは上限が32,767です。私はlong int、unsigned int、およびunsigned long intを使用しようとしましたが、プログラムはまだ32,767の後にキューに0をプッシュします。私はchar/stringのアプローチを試すべきか、解決策がないのでしょうか?


void fill_que(unsigned int b) { 
    int price = b; 
    while(price > 0) { 
    queue.push(price%10); 
    Serial.print(price%10); 
    price/=10; 
    } 
} 

int main() { 
    unsigned int price1 = 36111; 
    fill_que(price1); 
} 
+2

。 [mcve]を投稿してください。 – Johan

+0

ポインタを使用して4バイトのメモリストレージにアクセスすることを検討しましたか?そうすれば、整数変数の代わりに自分自身を定義したメモリ領域を使用すると、問題を解決することができます。つまり、独自の "整数型"を作成することもできます。 – wBB

+0

@wBB私がする? –

答えて

2

私はあなたが変数priceの種類を変更するのを忘れて、推測を作ると言うだろう。

それは次のようになります。私たちはあなたは答えを提供することは不可能である試みているものを見ていない限り

void fill_que(unsigned long b) 
{ 
    unsigned long price = b; 
    while(price > 0) 
    { 
    queue.push(price%10); 
    Serial.print(price%10); 
    price/=10; 
    } 
} 

int main() 
{ 
    unsigned long price1 = 36111; 
    fill_que(price1); 
} 
関連する問題