1. C语言主函数:程序的唯一入口与执行起点
每个C程序都从main()函数开始执行,这是C语言标准明确规定的程序入口点。在ANSI C标准中,main函数有两种标准形式:
c复制int main(void) {
// 程序代码
return 0;
}
或者带命令行参数的形式:
c复制int main(int argc, char *argv[]) {
// 程序代码
return 0;
}
注意:在嵌入式开发中可能会看到void main()的形式,但这不符合C标准,可移植性差,建议始终使用int main()形式。
main函数的返回值通常用于表示程序执行状态,返回0表示成功,非零值表示错误(具体含义由操作系统定义)。在Linux/Unix系统中,可以通过echo $?查看上一个程序的返回值。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. printf函数:格式化输出的核心工具
printf是C语言标准库中最常用的输出函数,其原型为:
c复制int printf(const char *format, ...);
它接受一个格式字符串和可变数量的参数,根据格式说明符将数据格式化后输出到标准输出。常见的格式说明符包括:
%d- 十进制整数%f- 浮点数%c- 单个字符%s- 字符串%p- 指针地址%x- 十六进制整数
一个典型的使用示例:
c复制int age = 25;
float height = 1.75f;
printf("年龄: %d岁, 身高: %.2f米\n", age, height);
提示:使用
%.2f可以控制浮点数只显示两位小数,这在财务计算等场景中特别有用。
3. printf的高级用法与常见陷阱
3.1 格式化控制进阶
printf的格式字符串支持更精细的控制:
c复制int num = 123;
// 输出宽度为10,不足用0填充
printf("%010d\n", num); // 输出: 0000000123
// 左对齐,宽度20
printf("%-20s\n", "左对齐文本");
// 科学计数法表示
double bigNum = 123456789.0;
printf("%.2e\n", bigNum); // 输出: 1.23e+08
3.2 常见错误与防范
-
格式说明符与参数类型不匹配:
c复制int num = 5; printf("%f\n", num); // 错误!会导致未定义行为 -
忘记处理返回值:
printf返回成功输出的字符数,这在需要精确控制输出时很有用:c复制int chars_printed = printf("Hello"); if (chars_printed < 0) { perror("printf失败"); } -
缓冲区问题:
默认情况下,标准输出是行缓冲的(遇到换行符或缓冲区满才输出)。在需要即时显示时可以手动刷新:c复制printf("正在处理..."); fflush(stdout); // 立即输出
4. 主函数与printf的实战应用
4.1 简单的命令行计算器
c复制#include <stdio.h>
int main() {
double num1, num2;
char op;
printf("请输入表达式 (如 3 + 5): ");
scanf("%lf %c %lf", &num1, &op, &num2);
switch(op) {
case '+':
printf("结果: %.2f\n", num1 + num2);
break;
case '-':
printf("结果: %.2f\n", num1 -
