C语言
C语言的特色之一是：语言不负责内存边界检查，这是因为在运行时进行内存边界检查会造成性能问题，与UNIX哲学不符。此特性容易导致缓冲区溢出问题。然而，部分编译器（如英特尔编译器）会出于安全性的考量，提供方法以进行运行时内存边界检查。
嵌入式C语言
在早期的嵌入式应用中，工程师需要对C语言进行扩展以使系统能够支持诸如定点数，多个不同的存储器以及I/O等功能，但对于不同系统的扩展并不能通用，非标准化地扩展将会降低软件的可移植性。因此在2008年，C语言标准委员会对C语言进行了标准化扩展，以解决上述问题。扩展后的C语言在原标准C语言的基础上新增了定点运算，地址空间命名，I/O硬件寻址等嵌入式系统常用功能。嵌入式C语言依旧沿袭了大部分标准C语言的语法和语义，例如：main函数、变量定义、数据类型声明、条件判断（if, switch case）、循环语句（while, for, do while）、数组、字符串、宏定义、位操作、结构体和共同体等 。