1

PIC マイクロコントローラで変数 "integer" を定義すると、Atmel マイクロコントローラで同じ "int" 変数を定義した場合と同じサイズになりますか? それとも、異なるサイズになりますか?

この質問は、組込みシステムのインタビューで、What Should the Answer be ? にあります。

私は少し混乱しています!!

マイクロコントローラまたはプログラミング言語に依存しますか? 整数のような同じ変数タイプは、すべての異なるプログラミング言語で同じサイズですか??

それは同じ質問ではありません。組み込みコントローラーでは少し異なります。

4

5 に答える 5

6

インタビューの質問に対する答えは次のようになります。

場合によっては、stdint.h で定義されている型を使用するか、コンパイラのドキュメントを参照するか、limits.h の定義を調べる必要があります。

面接担当者がイエス/ノーの回答を求めることはまずありませんし、面接の状況でそのような簡潔さをおそらく評価しないでしょう - 質問は、あなた自身やあなたの能力について有用または興味深いことを言うまで、あなたに話をさせることを目的としています.知識。彼がおそらく探しているのは、C の標準型サイズがコンパイラ/アーキテクチャの依存関係であるという事実を認識しているかどうか、および移植可能なコードの潜在的な可変性をどのように処理するかということです。

ある PIC と別の PIC の間、または 1 つの Atmel と別の PIC の間の int が、PIC と Atmel 間で異なることはもちろん、可能性があります。たとえば、Atmel AVR32 は確かに 8 ビット AVR とは異なります。同様に、MIPS ベースの PIC32 は「従来の」PIC とは異なります。

また、組み込み型のサイズは厳密には「コンパイラの実装」の問題であるため、同じプロセッサ用の 2 つの異なるコンパイラが異なる可能性があります (非常にありそうにありませんが、コンパイラ ベンダーは賢明に道を外れることはありません)。そのひねくれた!)。

C および C++ (およびもちろんアセンブラー) 以外の言語は、最小のランタイム環境要件を持つシステム レベルの言語であるため、小さなマイクロコントローラーではあまり一般的ではありませんが、型のサイズは言語定義によって異なる場合があります。

于 2013-07-28T09:28:27.563 に答える
2

問題は、標準 C 型が実装ごとに異なる傾向があることです。stdint.h にある型を使用すると、必要なビット数を指定できます。

于 2013-07-28T05:12:11.540 に答える
1

32 ビットまたは 64 ビットのアーキテクチャによって異なります。32 ビット システムでは、整数は 32bit でコーディングされます。

符号付き整数 32 ビットの場合:

-2,147,483,648 ~ 2,147,483,647 の値

64 ビット システムでは 64 になります。

符号付き整数 64 ビットの場合: -9223372036854775808 と 9223372036854775807 の間の値

したがって、質問に答えるために、使用しているアーキテクチャに応じて整数のサイズが異なる場合があります。

于 2013-07-28T05:10:03.133 に答える
1

それは多くのことに依存します。はいともいいえとも言えませんが、私の答えはもっといいえです。

int16ビットであることが保証されています。ただし、後者のアーキテクチャの多くintは 32 ビットの数値であり、ルールに違反することはありません。Atmels 8 ビット マイクロコントローラーの何intが 16 ビットであるかを知っている限り、PIC についてはわかりません。

とにかく、私の提案は、定義された型を使用することです。使用しているコンパイラはわかりませんが、AVR Studio を使用しています。次のようなタイプが定義されています。

uint8_t
int8_t
uint16_t
...
int64_t

したがって、これらの型はすべてのプロセッサで同じサイズであることが保証されているため、コンパイラで少し調査する必要があります。

于 2013-07-28T13:23:04.697 に答える