不同微控制器中的可变大小是否相同?

Aym*_*nis 1 c embedded microcontroller avr microchip

如果我们在PIC单片机中定义一个变量"整数",那么当我在Atmel微控制器中定义相同的"int"变量时,它的大小是否相同?或者它会有不同的尺寸?

这个问题是在嵌入式系统的采访中,答案应该是什么?

我有点困惑!

它取决于微控制器还是编程语言?在所有不同的编程语言中,相同的变量类型如整数是否相同?

这不是同一个问题,因为嵌入式控制器有点不同.

Cli*_*ord 6

面试问题的答案应该是这样的:

可能,在重要的地方,应该使用stdint.h中定义的类型,或者查阅编译器文档或检查limits.h中的定义.

面试官不太可能要求是/否答案,并且在任何情况下可能都不会欣赏面试情况中的这种简洁性 - 这些问题旨在让你说话直到你说出对自己或你的能力有用或有趣的事情.知识.他可能正在寻找的是你是否意识到C中的标准类型大小是编译器/体系结构依赖性以及如何处理可移植代码中潜在的可变性这一事实.

很可能并且有可能在一个PIC和另一个PIC之间或一个Atmel和另一个PIC之间的int不同,更不用说在PIC和Atmel之间.例如,Atmel AVR32肯定会与8位AVR不同,同样基于MIPS的PIC32与"经典"PIC不同.

内置类型的大小也严格来说是一个"编译器实现"问题,因此同一个处理器的两个不同的编译器可能会有所不同(虽然这是非常不可能的 - 因为没有编译器供应商会明智地选择它们有悖常理!).

C和C++以外的语言(当然还有汇编程序)在小型微控制器上不常见,因为它们是具有最小运行时环境要求的系统级语言,但是类型的大小当然可能因语言定义而异.