Arduino IDEでのchar型の変数の振舞
最近のArduino IDEでは従来のAVRマイコンほ他に、ARM系のボードもサポートしています。
スケッチもある程度、他のマイコンボードへの流用が出来ます。
私もAVR系のArduino UnoのスケッチをSTM32のボードに流用したりするのですが、
動作が異なる不可解な現象が発生し、ちょっとハマりました。
色々と突き詰めていくと、
AVRマイコンとARMマイコンではchar型の扱いが異なることが判明しました。
次のスケッチはchar型の変数aに-1を格納して表示する例です。
色々と突き詰めていくと、
AVRマイコンとARMマイコンではchar型の扱いが異なることが判明しました。
次のスケッチはchar型の変数aに-1を格納して表示する例です。
void setup() { Serial.begin(115200); char a; a= -1; Serial.print("a="); Serial.println(a,DEC); Serial.print("-1="); Serial.println(-1,DEC); } void loop() { }
Arduino UNOの実行結果 Arduino Duo、M0、Bulle Pillボードの実行結果
if 文判定でも差異は明確に現れました。
まあ、char型の変数にマイナス値を使うようなプログラムはあまりないですが、
先日、ゲームの移植でちょっとハマってしまいました。
同じ開発環境でこの不統一はちょっとやめてほしいなぁ
char型についてはちょっと気を付ける必要があります。
私は、int8_t、uint8_tとC99的に記述しています。
« 次はSTM32ボードを積極的に使ていきたい(12) - 内部RTCの利用 | トップページ | 次はSTM32ボードを積極的に使ていきたい(13) - グラフィック液晶 »
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「ARM」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- PocketGoで遊んでみる(1)(2020.03.24)
- Arduino用 MML文演奏ライブラリの作成 その1(2019.04.01)
- BluePillボードで4桁7セグLEDの制御(2019.03.21)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
« 次はSTM32ボードを積極的に使ていきたい(12) - 内部RTCの利用 | トップページ | 次はSTM32ボードを積極的に使ていきたい(13) - グラフィック液晶 »
コメント