符号总结:
一、占位符
%d:十进制整数
%c:字符
%f:单精度浮点数
%lf:双精度浮点数
%x:十六进制数
%o:八进制数
%p:地址
%u:十进制无符号整数
二、注释符号
- 1、单行注释://
- 2、多行注释:/* */
- 3、/* */注释是不能嵌套的
- 4、/* 总是离它最近的 */ 进行匹配
三、转义字符
- \n:换行符
- \r:回车符,光标回到当前行的最开始
- \?:在书写连续多个?时使用,防止它们被解析成三字母词
- \':输出单引号字符
- \":输出双引号字符
- \\:输出 \ 字符
- \a:警告,产生声音
- \b:退格,将光标当前位置后退一个字符
- \f:换页,将光标当前位置移到下一页开头
- \t:水平制表符,将光标当前位置移到下一个tab位置
- \v:垂直制表符,将光标当前位置移到下一个垂直表对齐点
- \o:o表示一个八进制数字,与该八进制对应的字符
- \xh:h表示一个十六进制数字,与该十六进制对应的字符
四、算术运算符
1、+
就是进行算术加法运算
#include <stdio.h>
int mian()
{
int a=10;
int b=20;
printf("%d\n",a+b);
return 0;
}
2、-
进行算术减法运算
#include <stdio.h>
int main()
{
printf("%.2f\n",3.14-0.15);
retrun 0;
}
3、*
进行算术乘法运算
#include <stdio.h>
int main()
{
printf("%d\n",10*35);
printf("%.2f\n",3.14*10);
return 0;
}
4、/
除法运算
1、整数与整数运算:遵从向0取整运算
C语言默认的取整方式向0取整
向0取整:就是在数轴上朝向0的方向取整
2、整数与小数运算,小数与小数都是按照正常除法运算
#include <stdio.h>
int main()
{
//整数与整数运算遵从向0取整
printf("%d\n",3/2);//1
//整数与小数,小数与小数正常的除法运算
printf("%f\n",3.14/12);
printf("%f\n",3.14/0.2);
return 0;
}
5、%
取余运算
只能运用在整型数与整型数之间
得到两个数相除之后的余数
#include <stdio.h>
int main()
{
//只能用于整数与整数之间的运算
printf("%d\n",3%2);
printf("%d\n",10%5);
return 0;
}
五、比较运算符
两个数进行比较会的出一个真假值
在c中 数字0表示假,非0数字表示真
1、> 、>=
大于号、大于等于号
2、
小于号、小于等于号
3、==
双等号
比较两个数是否相等
1>浮点数与0比较
1、浮点数在计算时会有精度损失
2、浮点数在比较的时候,绝对不能直接使用==来进行比较
浮点数本身有精度损失,进而导致各种结果可能有细微的差别
3、DBL_EPSILON C语言中自定义的最小精度数,用来判定两个浮点 数是否相等时两者相减若小于此精度数,说名条件为真!
或者判定两个浮点数是否相等的时候可以自行宏定义一个精度来比较,将两个数相减之后跟精度比较
4、使用系统提供的精度:
DBL_EPSILON double 最小精度
FLT_EPSILON float 最小精度
5、fabs() 计算出括号中值的绝对值!
if( (fabs(a-b)) < DBL_EPSILON) {}
要不要
6、判断两个浮点数是否相等就是将两个数的差值与最小精度比较
7、判断浮点数与0是否相等,就是浮点数与0的差值与最小的精度比较
#include <stdio.h>
#include <math.h>
#define DBL_EPSILON 0.001
int main()
{
//用fabs函数是为了防止出现相减为负数的情况
//浮点数和0比较
double a = 0.05;
if (fabs(a - 0) < DBL_EPSILON)
{
printf("相等\n");
}
else
{
printf("不相等\n");
}
//浮点数与浮点数比较
double b = 3.14;
double c = 3.15;
if (fabs(b - c) < DBL_EPSILON)
{
printf("相等\n");
}
else
{
printf("不相等\n");
}
return 0;
}
2>指针和0比较
推荐使用:if(NULL==p){}
#include <stdio.h>
int main()
{
char c=0;
char* p=&c;
if(P==NULL)
{
printf("p为空");
}
else
{
printf("%c\n",*p);
}
return 0;
}
六、逻辑运算符
1、&&
逻辑与(并且)
全真为真、全假为假
只要出现一个假就为假
2、||
逻辑或(或者)
全真为真、全假为假
只要出现一个真就为真
3、!
逻辑非(取反)
让假为真、真为假
4、短路原则
1、&&
当遇到一个条件为假则结果为假
不会再去执行后面的判断
2、||
当遇到一个条件为真则结果为真
不会再去执行后面的判断
七、二进制位操作符
1、移位操作符
移动的是二进制位
只能作用于整数
1>
左移操作符
左边丢弃,右边补0
2> >>
右移操作符
1、算术右移:
右边丢弃左边补原符号位(正数补0,负数补1)
2、逻辑右移动
右边丢弃,左边补0
2、位操作符
运算的是二进制位
要用补码进行运算
1> &
按位与:
同0为0、同1为1
一个为0结果为0
2> |
按位或
同0为0,同1为1
一个为为1结果为1
3> ^
按位异或
相同为0,相异为1
4> ~
按位取反
对二进制位进行取反操作
八、赋值操作符
1、 =
将等号右边的内容赋值给左边
2、复和赋值符
+=、-=、*=、/=、%=
>=、|=、^=、&=
九、单目操作符
只有一个操作数
1、!
逻辑反操作符
2、- 、+
负值、正值
3、&
取地址符号
4、sizeof
sizeof操作符:
计算操作数的类型的长度(字节)
5、~
按位取反
对二进制位取反
6、--前置、后置--
前置:先--再进行其它操作
后置:先进行其它操作再--
7、++前置、后置++
前置:先++再进行其它操作
后置:先进行其它笑傲做再++
8、*
间接访问操作符
解引用操作
通常对指针进行解引用
9、(类型)
强制类型转换操作