请列举五个常见的编程错误，并分别简要解释其原因。
user
1. **空指针引用**  
   原因：尝试访问未初始化或已被释放的对象，导致程序崩溃或未定义行为。

2. **数组越界**  
   原因：访问数组时索引超出其边界，可能导致数据损坏或程序崩溃。

3. **未定义变量**  
   原因：使用未经声明或初始化的变量，通常会导致编译错误或运行时错误。

4. **无限循环**  
   原因：循环条件始终为真，导致程序无法继续执行其他代码。

5. **类型转换错误**  
   原因：在不兼容的类型之间进行强制转换，可能导致数据丢失或程序崩溃。
assistant