1.原理
C语言是一门编译型计算机语言,要编写C代码,C源代码文本文件本身无法直接执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件,然后才能执行。这里的二进制的可执行文件就是我们最终要形成的可执行程序。
C语言形成可执行程序
-
每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
-
多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)
2.查询网站
库函数查询:C library - C++ Reference
C语言关键字:C 关键词 - cppreference.com
ASCII编码表:ASCII 码表 - cppreference.com
-
字符A~Z的ASCII码值从65~90
-
字符a~z的ASCII码值从97~122
-
对应的大小写字符(a和A)的ASCII码值的差值是32
-
数字字符0~9的ASCII码值从48~57
-
换行
\n
的ASCII值是:10 -
在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察
4.变量
-
局部变量是放在内存的栈区
-
全局变量是放在内存的静态区
-
堆区是用来动态内存管理的
5.运算符
#include <stdio.h>int main()
{float x = 6 / 4;int y = 6 / 4;printf("%f\n", x); //1.000000printf("%d\n", y); //1return 0;
}
C 语言里面的整数除法,默认是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。
#include <stdio.h>int main()
{float x = 6 / 4.0;int y = 6 / 4;printf("%f\n", x); //1.500000printf("%d\n", y); //1return 0;
}
运算符%
表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
#include <stdio.h>int main()
{int x = 6 % 4;printf("x = %d\n", x);//2return 0;
}
负数求模的规则是,结果的正负号由第一个运算数的正负号决定。
#include <stdio.h>int main()
{printf("%d\n", 11 % -5); // 1printf("%d\n",-11 % -5); // -1printf("%d\n",-11 % 5); // -1return 0;
}
6.单目操作符
6.1前置++/--
先自增/自减,后赋值;
#include <stdio.h>int main()
{int a = 10;int b = ++a; printf("a=%d b=%d\n", a, b);//a=11 b=11return 0;
}
6.2后置++/--
先赋值,后自增/自减;
#include<stdio.h>int main()
{int a = 10;int b = a--;printf("a=%d b=%d\n", a, b);//a=9 b=10return 0;
}
7.占位符
占位符 | 描述 |
%a | 十六进制浮点数,字母输出为小写 |
%A | 十六进制浮点数,字母输出为大写 |
%c | 输出字符 |
%d | 十进制整数 |
%e | 使用科学计数法的浮点数,指数部分的e为小写 |
%E | 使用科学计数法的浮点数,指数部分的E为大写 |
%i | 整数,基本等同于%d |
%f | 小数(包含float类型和double类型) |
%g | 6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写 |
%G | 等同于%g,唯一的区别是指数部分的E为大写 |
%hd | 十进制 short int 类型 |
%ho | 八进制 short int 类型 |
%hx | 十六进制 short int 类型 |
%hu | unsigned short int 类型 |
%ld | 十进制 long int 类型 |
%lo | 八进制 long int 类型 |
%lx | 十六进制 long int 类型 |
%lu | unsigned long int 类型 |
%lld | 十进制 long long int 类型 |
%llo | 八进制 long long int 类型 |
%llx | 十六进制 long long int 类型 |
%llu | unsigned long long int 类型 |
%Le | 科学计数法表示的 long double 类型浮点数 |
%Lf | long double 类型浮点数 |
%n | 已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。 |
%o | 八进制整数 |
%p | 指针 |
%s | 字符串 |
%u | 无符号整数(unsigned int) |
%x | 十六进制整数 |
%zd | size_t类型 |
%% | 输出一个百分号 |
8.scanf()赋值忽略符*
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int year = 0;int month = 0;int day = 0;scanf("%d%*c%d%*c%d", &year, &month, &day);printf("%d-%d-%d\n", year, month, day);return 0;
}