hello world
// 单行注释
/*单行注释*/
/*多行
注释*/
#include <stdio.h>
/*stdio.h标准输入输出头文件,提供键盘输入和屏幕输出
*预处理指令,告诉编译器将头文件里的内容包含在此程序中,编译前预处理
*相当于把stdio.h文件的所有内容粘贴到此处,
*头文件可以定义常量,指明函数名及如何使用*/
void butler(void); // 函数声明,指明没有返回值和参数
int main(void)
/*函数头
*main是程序入口。
*函数是程序基本模块。程序由一个或多个函数组成
*函数声明:返回值类型 函数名(传参类型);
*()识别main()是一个函数、main:函数名、int:返回整型、void:不带参数
*/
{ // 函数体开始
/* 我的第一个 C 程序 */
int num;
/*变量声明:返回值类型 变量名;
**声明整型变量num。把特定标识符num和分配的特定位置(int大小)联系起来
**变量名可以有大写字母、小写字母、数字和下划线,不可以数字开头,区分大小写。
**声明集中放在函数开始便于查看,使用前不声明会报错。*/
int feet, fathoms;
/*同时声明两个变量,逗号分隔*/
num = 1;
fathoms = 2;
/*给变量赋值,把等号左边的值赋给右边
声明时编译器会在内存中为num预留空间,赋值时把值储存在之前预留的位置*/
feet = 6 * fathoms;
/* *表示乘法 */
printf("My favorite number is %d because it is first\n", num);
/*调用stdio.h里的打印函数printf,
**括号内为两个实参,实参是传递给函数的特定值,形参是函数中用于存储值的变量
**引号内为打印信息及格式,%d:以十进制格式输出num,\n转义序列换行,没有\n光标停留在同一行*/
printf("My favorite \nnumber is /n because it is first\n");// /n没有意义,原样打印
printf("There are %d feet in %d fathoms!\n", feet, fathoms);
/* 打印多个值,第一个变量替换第一个%d,第二个变量替换第二个%d,
待打印值也可以是表达式,eg:6*fathoms*/
butler(); // 函数调用
getchar(); // 等待用户按下一次回车键再退出
return 0; // 结束main()的要求
} // 函数体结束
void butler(void) // 函数定义
{
printf("You rang,sir?\n");
}
提高程序可读性:
选择有意义的函数名
写注释
在函数上用空行分隔概念上的多个部分
每条语句各占一行
debug
语法错误(C语言规则)+语义错误(函数要表达的意义)
自己模拟计算机逐步执行程序
在程序关键点插入printf
使用调试器,一步步运行程序,并检查该变量的值
关键字和保留表示符
基本类型
int(short long)、unsigned、signed、float、double 、long double 、char、_Bool 、 _Complex、_Imaginary
派生类型
struct、enum、union
别名 typedef
循环
do、while、for、break、continue
分支
switch case default break、if else、goto
函数
void、return、inline
存储类别
auto、register、static、extern、_Thread_local
类型限定符
const、volatile、restrict、_Atomic
字节数 sizeof
对齐
_Alignas、_Alignof
预处理
_Generic、_Noreturn、_Static_assert