#C语言符号
##注释(Comment)
注释是对程序代码或功能的说明和解释
注释用/*和*/
包含起来,可以多行注释
在C++风格中,双斜线//
进行单行注释
在C语言编译器中,对注释完全忽略
下面是两种风格的举例
#include <stdio.h>
int main()
/*autor:Vampire
time:2020/02/19*/
{
printf("hello world\n"); //output:hello world
return 0;
}
##标识符(Identifier)
###预定义标识符
1.数据类型关键字(12个):
(1) char :声明字符型变量或函数
(2) double :声明双精度变量或函数
(3) enum :声明枚举类型
(4) float:声明浮点型变量或函数
(5) int: 声明整型变量或函数
(6) long :声明长整型变量或函数
(7) short :声明短整型变量或函数
(8) signed:声明有符号类型变量或函数
(9) struct:声明结构体变量或函数
(10) union:声明共用体(联合)数据类型
(11) unsigned:声明无符号类型变量或函数
(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
2.控制语句关键字(12个):
A循环语句
(1) for:一种循环语句(可意会不可言传)
(2) do :循环语句的循环体
(3) while :循环语句的循环条件
(4) break:跳出当前循环
(5) continue:结束当前循环,开始下一轮循环
B条件语句
(1)if: 条件语句
(2)else :条件语句否定分支(与 if 连用)
(3)goto:无条件跳转语句
C开关语句
(1)switch :用于开关语句
(2)case:开关语句分支
(3)default:开关语句中的“其他”分支
D返回语句
return :子程序返回语句(可以带参数,也看不带参数)
3.存储类型关键字(4个)
(1)auto :声明自动变量 一般不使用
(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)
(3)register:声明积存器变量
(4)static :声明静态变量
4.其它关键字(4个):
(1)const :声明只读变量
(2)sizeof:计算数据类型长度
(3)typedef:用以给数据类型取别名(当然还有其他作用
(4)volatile:说明变量在程序执行中可被隐含地改变
##用户自定义标识符
常量
变量
函数名
......
## 分隔符(Separator)
空格、回车、换行、逗号等。
#include <stdio.h>
int main()
{
printf("hello world\n"); //此处分号为分隔符
return 0;
}
##符合语句标记
标记函数、语句块
#include <stdio.h>
int main()
/*此代码的 { }为复合语句
{
printf("hello world\n"); //output:hello world
return 0;
}
## 运算符表
#C语言数据类型
#C语言常数与变量
##整型常量
三种不同的数制
-----------------------------------------
十进制 八进制 十六进制
65 0101 0x41
125 0175 0x7d
-----------------------------------------
##浮点数常量
小数形式:0.0 31415926;
指数形式:3.1415926e-2;或3.1415926E-2;
##字符常量
字符常量是指用单引号括起来的一个字符;
字符对应ASCII码值存储,占一个字节。例如“a↔97,A↔65”。
##字符串常量
字符串常量是用双引号括起来的一串字符;
在内存中存储时,末尾自动加NULL或\0(ASCII码值为0).
##转义字符
不可打印或具有特殊用途的字符。
##符号常量
注意大写、无分号!!!
#define PI 3.1415926
#define TRUE 1
#基本运算
##双目运算
加 a+b 9+8=17
减 a-b 9-8=1
乘 a*b 9*8=72
除 a/b 9/8=1
9.0/8=1.125
取余 a%b 9%8=1
##单目运算
自增 a++ a参与运算后,a的值再自增1
++a a自增1后再参与其它运算
自减 a-- a参与运算后,a的值再自减1
--a a自减1后再参与其它运算
取负 -a
已知 int x,y ,a=20; 已知 int x,y ,a=20;
则 x=--a; /*a=a-1;x=1;*/ 则 x=a--; /*a=a;x=a-1; */
y=a; y=a;
结果x=20,y=20; 结果x=20,y=19;
##赋值运算
变量=表达式;例x=5*4;
也可以嵌套,x=(y=(z=100)),相当于x=100;y=100;z=100;
a+=b 等效为 a=a+b
a-=b 等效为 a=a-b
a*=b 等效为 a=a*b
a/=b 等效为 a=a/b
a%=b 等效为 a=a%b
设x=20;x*=10+2;x=?
x=x*(10+2)
x=x*10+2
*算数运算符*优先级高于*算数赋值运算符*
##关系运算与逻辑运算
关系表达式的值为真,用1 或非零数值表示,关系表达式的值为假。
关系运算符:
大于 a>b 大于等于 a>=b
小于 a<b 小于等于 a<=b
等于 a=b 不等于 a!=b
逻辑运算
逻辑与 a && b
逻辑或 a || b
逻辑非 !a
##位运算
位逻辑运算
按位与 a&b 相同为1则为1
按位或 a|b 见1为1
按位异或 a^b 不同为1
按位反 ~a 1变0,0变1
------------------
位移运算(变量一端被移出弃,另一端则以0填充)
右位移 a>>4 每右移N位相当于除以2的N次幂
左位移 a<<2 每左移N位相当于乘以2的N次幂
##其它运算
###三目条件运算
X ?Y : Z
若X为真,则整个表达式的结果为Y,否则整个表达式为Z。‘
###逗号结合运算
表达式1,表达式2,表达式3…表达式n
先求解表达式1,在求解表达式2,最后求解表达式n,整个逗号表达式的值为表达式n的值。
例如:X=(a=10,b=100,c=1000); X的值为1000;
###长度运算
例如:double dx;
sizeof(dx)=8;
sizeof(double)=8;
#优先级与结合性
单目运算符的优先级高于双面运算符,双目运算符的优先级高于三目运算符;
在双目运算符中,算数运算符高于关系运算符,关系运算符高于逻辑运算符;
在位运算符中,移位运算符高于关系运算符,逻辑运算符低于关系运算符;
##自动类型转换
相同类型数据的运算结果,还是该类型;
不同类型数据的运算结果,取决于范围大的那个;
取值范围大的类型赋值给取值范围小的是不安全的,会存在丢失小数部分
long double >double>float>long>int>short>char
##数据输入输出
###格式输出函数-printf
printf(“控制字符串”,输出项列表);
%c 字符型输出
%d 十进制输出
%u 无符号输出
%f 浮点型小数输出
%o 八进制输出
%X 十六进制输出
%s 字符串输出
####字符宽度
%5d表示字符宽度位4个字节显示一个整数
设i=123;
printf("%5d\n",i); output:___123
printf("%05d\n",i); output:000123
设j=1234.567;
printf("%9.3f\n",j); output:_1234.567
printf("%-9.3d\n",j); output:1234.567_ // 有负号为左对齐,否则为右对齐
printf("%*d\n",5,j); output:_123
printf("%*d\n",w,j); output:以W宽度显示
printf("%*.*f\n",j); output:1234.56
普通字符
可打印字符-直接写出字符
i=4;
printf("num=%d",i); output:num=4
不可打印字符-转义字符
printf("%f%%\n",99.9); output:99.9%
###字符输出函数-putchar
将一个字符输出在显示屏上,参数可以是字符变量、字符常量、字符ASCII码。
输入输出函数被包含在"stdio.h",使用这些函数时,需要预处理命令。
#include “stdio.h” 但printf和 scanf可省略。
putchar('A'); output:A
putchar(97); output:a
********************************************
a='!';
putchar('a'); output:!
###格式输入函数-scanf
scanf("控制字符串”,输入项列标);
字符*输入时,跳过其相应的数据
scanf("%d%d",&a,&b);
若input:12 34 则a为12 b为34
scanf("%*d%d",&a,&b);
若input:12 34 则a为12
----------------------------------------
字符空格输入时,跳过输入流中所有空格
scanf("%d%d%c",&a,&b,&ch);
若input:12 34 i 则a为12,b为34,ch为空格
scanf("%d%d %c",&a,&b,&ch);
若input:12 34 i 则a为12,b为34,ch为i
----------------------------------------
可打印字符输入时,去除输入流中所有与可打印字符相同的字符
scanf("%d,%d,%c",&a,&b,&ch);
若input:12,34,i 则a为12,b为34,ch为i
###字符输入函数-getchar
getchar() 无参数,只能接受一个字符
从键盘上输入一个可打印字符,函数的返回值为该字符的ASCII码。
使用时,通常将其值赋予某个字符变量或整型变量。
example
#include "stdio.h"
main()
{
char c;
c=getchar(); putchar(c);
c=005; putchar(c); putchar(005);
}
例:输入一个字符,输出其前后和呗字符
#include "stdio.h"
main()
{
char c;
int c1,c2;
c=getchar();
c1=c-1; c2=c+1;
printf("%c %c %c\n",c1,c,c2);
printf("%d %d %d\n",c1,c,c2);
}
----------------------------------------------
if input:B
then output:A B C
65 66 67