在线 C 语言编译器
在浏览器中编写、编译并运行 C 代码,适合学习、练习与快速验证。
C 代码编辑器
输出
标准输出(stdout)
标准错误(stderr)
执行信息
退出码:
运行状态:
使用说明
- 在左侧编辑器编写 C 代码(包含
#include <stdio.h>等头文件)。 - 点击“运行代码”即可在线编译并执行程序。
- 右侧面板展示输出与错误信息。
- 绿色区域为标准输出(例如
printf输出)。 - 红色区域为编译/运行错误与警告。
- 执行信息包含退出码与运行状态。
- 快捷键:
Ctrl+Enter(Mac 上为Cmd+Enter)。
C 语言基础
基本结构:
#include <stdio.h>
int main(void) {
printf("Hello, C!\\n");
return 0;
}
int main(void) {
printf("Hello, C!\\n");
return 0;
}
常用头文件:
<stdio.h>- 标准输入输出<stdlib.h>- 内存分配、转换、退出<string.h>- 字符串/内存操作<math.h>- 数学函数<stdbool.h>- 布尔类型bool
数据类型与变量
基本类型:
int- 整型float/double- 浮点型char- 字符char[]- 字符串(以\0结尾)bool- 布尔(需<stdbool.h>)
示例:
#include <stdbool.h>
int age = 25;
double height = 1.75;
char name[16] = "John";
bool isStudent = true;
int age = 25;
double height = 1.75;
char name[16] = "John";
bool isStudent = true;
控制结构
条件语句:
if (condition) {
/* code */
} else if (other) {
/* code */
} else {
/* code */
}
/* code */
} else if (other) {
/* code */
} else {
/* code */
}
循环:
/* for 循环 */
for (int i = 0; i < 10; i++) {
printf("%d\\n", i);
}
/* while 循环 */
while (condition) {
/* code */
}
for (int i = 0; i < 10; i++) {
printf("%d\\n", i);
}
/* while 循环 */
while (condition) {
/* code */
}
函数与数组
函数声明:
int add(int a, int b) {
return a + b;
}
void printMessage(const char* msg) {
printf("%s\\n", msg);
}
return a + b;
}
void printMessage(const char* msg) {
printf("%s\\n", msg);
}
数组:
int arr[5] = {1, 2, 3, 4, 5};
/* C 中无 vector,请使用数组或动态内存分配 */
/* C 中无 vector,请使用数组或动态内存分配 */
常见问题
支持哪些 C 标准?
支持常见的 C 标准(如 C99 / C11)。多数标准库与常用语法均可使用。
可以使用第三方库吗?
可使用标准 C 库(如 stdio、stdlib、string 等)。由于运行在沙箱中,第三方系统库/网络访问不可用。
运行是否有时间限制?
有。为避免死循环并保证公平使用,编译/运行都有时间限制,超时会自动终止。
可以保存代码吗?
暂不支持在线保存。建议将重要代码复制到本地,或使用收藏夹/笔记工具保存片段。
为什么会出现编译错误?
常见原因:缺少分号、未声明变量、语法错误、缺少头文件、类型不匹配,或未提供 main 函数等。请根据错误信息逐条修复。
运行时可以交互输入吗?
当前不支持交互式输入(如 scanf 等)。如需测试,可将测试数据写死在代码中,或用固定数据替代。
编译错误与运行时错误的区别?
编译错误 多为语法/链接问题;运行时错误 发生在执行阶段,例如除零、数组越界、段错误(segmentation fault)等。
示例程序(点击上方运行)
1. 递归计算阶乘
#include <stdio.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main(void) {
printf("5! = %d\\n", factorial(5));
return 0;
}
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main(void) {
printf("5! = %d\\n", factorial(5));
return 0;
}
2. 数组最大值
#include <stdio.h>
int main(void) {
int nums[5] = {3, 7, 1, 9, 4};
int max_val = nums[0];
for (int i = 1; i < 5; i++) {
if (nums[i] > max_val) max_val = nums[i];
}
printf("Maximum: %d\\n", max_val);
return 0;
}
int main(void) {
int nums[5] = {3, 7, 1, 9, 4};
int max_val = nums[0];
for (int i = 1; i < 5; i++) {
if (nums[i] > max_val) max_val = nums[i];
}
printf("Maximum: %d\\n", max_val);
return 0;
}