C语言的基本运算符和它的基本规则
前言:C语言中提供了很多的运算符你自己怎么去用吗?今天的内容有一点多就和小羽一起来看看吧。
C运算符
C语言提供了以下的运算符:
算术运算符 | + , - , * , / , % , ++ ,- - |
---|---|
关系运算符 | > , < , = , > , >= , <= , == , != |
逻辑运算符 | ! , && , || |
位运算符 | << , >> , ~ , | , ^ , & |
赋值运算符 | =(赋值) |
条件运算符 | ? : |
逗号运算符 | , |
指针运算符 | *和& |
求字节数运算符 | sizeof |
强制类型转换运算符 | (类型) |
成员运算符 | 一>,. |
下标运算符 | [ ] |
本章先介绍算术运算符和赋值运算符,其余的在以后各章中陆续介绍,符号之间用逗号分开了 |
基本的运算符
算术运算符
基本和数学逻辑一样
+:+a就是加上a的值
-:-a就是减去a的值
*:*a就是乘上a的值
/:/a就是除以a的值
%:%a就是除以a的值然后取余数一个
(自增)++和(自减)-- (分前和后)
++在前: ++i,–i
#include <stdio.h>
int main()
{
int i = 5;
printf("%d ", ++i);
printf(" %d", --i);
}
#include <stdio.h>
int main()
{
int i = 5;
printf("%d ", i++);
printf(" %d", i--);
}
前++:相当于先加1在用,前–同理
后++:相当于先用后加1,后–同理
下面的代码更复杂但是不常用:
int i = 5;
printf("%d,%d,%d,%d,%d,%d\n", --i,i--,i++,++i,--i,++i);
i = 9;
printf("%d,%d,%d,%d,%d,%d\n", --i, ++i, i--, i++, ++i, ++i);
i = 9;
printf("%d,%d,%d,%d,%d,%d\n", i++, --i, ++i,i++, ++i, i--);
第一行:前置的++或–都等于**(–i,i–,i++,++i,–i,++i)**这里面的总和,初始为5计算之后还是5。后置的++或–从右到左以此计算
第二行:同理:初始为9计算之后还是11。后置的++或–同理
第三行:同理:初始为9计算之后还是11。后置的++或–同理
总结的规律:后置的符号在两端以定义的值为初始值从右到左计算后置的,前置的一律为总和。
关系运算符> , < , = , > , >= , <= , == , !=
跟数学中一样注意的是==和!=
如a==b是判断a等不等于b
a!=b是a不等于b
逻辑运算符! , && , ||
!(非)取反在C语言中0!为1,任何不为0的!都为0 。如:
int main()
{
int a = 0,b=10,c=39,d=18;
printf("%d\n", !a);
printf("%d\n", !b);
printf("%d\n", !c);
printf("%d\n", !d);
}
&&(且) 如:1&&1或1&&2&&3 为真, 0&&1 为假。一个不满足就为假。
||(或) 如: 1||0为真 , 0||0为假。 一个满足就OK
#include <stdio.h>
int main()
{
printf("%d\n", 3 || 2 ||0);
printf("%d\n", 3 && 2 && 3);
}
位运算符<< , >> , ~ , | , ^ , &
它们都是基于二进制来用的。
#include <stdio.h>
int main()
{
int a = 1,b=3;
a = a >> 4;
b = b1<< 1;
printf("%d\n", a );
printf("%d\n", b);
}
int main()
{
int a = 1,b=2,c=4,d=7;
printf("%d,%d,%d\n", c ^ d, d | c, d & c);
printf("%d\n", ~a );
printf("%d\n", ~b);
}
赋值运算符=
就是如a=4这一些
条件运算符? :
相当于一对if–else
如:c=a>b?a:b 。如果a>b就c=b,否则c=b.
逗号运算符,
#include <stdio.h>
int main()
{
int a;
a = (2, 3, 5, 7, 4, 0);
printf("%d\n",a);
a = (2, 3, 1, 8, 5, 4);
printf("%d\n", a);
}
观察可以看出把逗号表达式的最后一个数给了c
指针运算符 *和&
&是取地址
*解引用
int main()
{
int a=2;
int* p=&a;//是把a的给指针p
*p=20;//a的值也会改变相当于他们用的同一个房间,房间的东西发生了变化都会变
return 0;
}
求字节数运算符sizeof
简单介绍用法
int main()
{
int a=0;
printf("%d\n", sizeof a);
}
int型就站4个字节
强制类型转换运算符(类型)
int main()
{
int b = 5,a=4;
double c = b / a;
printf("%lf\n", c);
}
可以发现小数部分全是0,如果想要高的精准度就改double c =(double) b / a;
成员运算符|一>,.
这个是结构体用的 如:
struct Student {
char ID[20];//学号
char Name[10];//姓名
}students[10];
students[1].ID==students[1]一>ID
students[1].Name==students[1]一>Name
下标运算符 [ ]
用于数组
数组a是从数组a[0]开始存放的。
总结:
这一些都是很常用的运算符我们一定要牢牢地掌握&&要熟练的运用它们,以后写算法可以快速的想起它们的个种用法。咱们下期见!