第一个C程序
#includeint main() { printf("Hello world!"); return 0;}// Hello world!
关于main函数
// main函数是程序入口函数int main(int argc, char **argv) { printf("Hello world!"); return 0;}return 0 的意义 程序运行的结果unix bash : echo $? csh : echo $statuswindows : if errorlevel 0 int argc 表示main函数的参数个数,包括运行的二进制名char **argv 字符数组 printf("%s", argv[0]); 0为运行的二进制名
变量/常量声明
// int 变量类型 i 变量名称 0 变量的值(如果没有初始值i将是一直随机的值)int i = 0;// 常量用const修饰符(不变的量,不经常改变的量)const int NUM = 100;NUM = 2; // 不能给常量重新赋值// 浮点数float foot = 1.2; // 浮点数的声明double inch = 1.234; // 双精度浮点数的声明scanf("%f", &foot); // 浮点数输入scanf("%lf", &inch); // 双精度浮点数输入printf("%f", inch); // 输出浮点数// 全局变量:在函数外定义的变量为全局变量,在所以函数中都有效// 本地变量:函数内部定义的变量为本地变量,只有在函数内部有效// 静态变量:使用static修饰符定义,离开函数后变量的值会被保留,再进入变量后上次离开后的值可以直接被使用int abc = 10; // 全局变量int main(int argc, char **argv) { f(); f(); f(); return 0;}void f(void){ static int a = 1; // 静态本地变量,其实是一个全部变量,但作用域只在本地 printf("%d\n", a); a++;}
变量的输出
int price = 0;scanf("%d", &price); // 输入printf("%d", price); // 输出
数据类型
整数:char、short、int、long、long long浮点数:float、double、long double逻辑:bool指针类型自定义类型
获取数据类型的大小
// 单位为字节// gcc test.c -o test -m32 编译时用32位sizeof(int) 4sizeof(char) 1sizeof(short) 2sizeof(long) 8 // 32位长度为4sizeof(long long) 8sizeof(float) 4sizeof(double) 8sizeof(log double) 16
格式化输入和输出
// %[flags][width][.prec][h|L]type/* flags - : 左对齐 + : 在前面放+或_ 空格 : 正数留空 0 : 0填充width 或 prec number : 最小字符数长度 * : 下一个参数是字符数 .number : 小数点后的位数 .* : 下一个参数是小数点后的位数h|L 修饰符,用来修饰类型 hh: 单个字符 h : short l : long ll: long long L : long double*/%d : int%i : 自动将16进制 8进制转为10进制%u : unsigned int%o : 八进制%x : 十六进制%X : 字符大写的十六进制%f : float // printf("%.3f", 0.323232); 保留小数点后3位%g : float%G : float%a 或 %A : 十六进制浮点%e || %E : 科学计数法%c : char%s : 字符串%p : 指针%n : 读入/写出的个数
自动类型转换
// 当运算符两边出现不一致的类型时,会自动转换成范围较大的类型// 数据类型从小到大char -> short -> int -> long -> long long int -> float -> double使用printf函数时整数类型用%d,浮点型用%f 就可以使用scanf函数要明确类型,比如输入short,需要用%hd,而不能直接用int
强制类型转换
// 要把一个量强制转换成一个类型(通常被转换成范围较小的类型)// (类型)值(int)10.2;
bool类型
// 需要引入stdbool.h头文件#include#include int main() { bool b = true; // 1 bool c = false; // 0 bool a = 6 > 5; // 1 return 0;}
函数定义/调用
#includeint sum(int begin, int end); // 函数的声明int main() { int c; c = sum(1, 10); printf("c=%d", c); return 0;}// int是返回数据的类型 sum函数名int sum(int begin, int end) { int i; int sum = 0; for(i = begin; i <= end; i++){ sum += i; } return sum;}
数组的定义/使用
/* 数组的定义 */// 数据类型 数组名[常量/变量],常量是数组的大小,c99中可以使用变量定义大小int number[100];// 数组中的元素全部赋值为0int number[100] = {0};// 不指定长度的数组int number[] = {1, 2, 3, 4, 5};// 数组元素的赋值,除了下标1的值为2,其他值都是0int number[] = {[1] = 2};/* 数组的使用 */// 使用下标来使用数组printf("%d", number[0]);