运算符
1.关系运算符
定义:>大于 <小于 >=大于等于 <=小于等于 ==等于 !=不等于
printf("%d\n",a>b);
printf("%d\n",a<b);
printf("%d\n",a>=b);
printf("%d\n",a<=b);
printf("%d\n",a==b);
printf("%d\n",a!=b);
2. 逻辑运算符
定义:与&&,或||,非!;假设A=1,B=0;
与 &&,两者参与运算的两个表达式都为真时,结果才为真,否则为假;
或 || 参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假;
非 ! 参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。
3.赋值运算符
这里的=相当于赋值给左边的变量。
4.自增,自减运算符
有++和--。这里是自增和自减,这里分为两种情况,如果自增(自减)运算符在前是先+(-)1,再输出。
反之,符号在后面时,就是先输出,再=(-)1。实际运算时,要根据需求去放置自增符的位置,代码如下:
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
printf("%d\n",++i);
printf("%d\n",i++);
printf("%d\n",i--);//前置--,先-1再使用
printf("%d\n",--i);//后置--,先使用再-1
return 0;
}
输入数字5结果如下:
5.条件运算符
表达式1 ?表达式2 :表达式3
条件运算符是C语言中唯一的一个三元运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。条件运算符也就是if else的简写。
做一个相关三个数 比大小的案例:
#include<stdio.h>
int main()
{
int a;
int b;
int c;
int d;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
d =(a>b? a:b)>c? (a>b? a:b):c;
printf("%d\n",d);
return 0;
}
6.位运算符
位运算符作用于位,并逐位执行操作,并且是针对二进制数去进行操作的。
定义:与& 或| 非~ 异或^ 左移>> 右移<<
与&运算 将每位进行进行与运算,最后输出结果 有0则0,都1才1;
或|运算 将每一位进行或运算,最后输出结果 有1就1,都0才0;
~非运算 对每一位进行取反,符号位也取反;
^异或运算 相同为0,相异为1;一个数异或两次
- a ^ b = b ^ a //交换率
- a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 结合律
- c= a ^ b 可以推出 a = b ^ c. (常用于加密)
- a ^a = 0.
- a^0 = a
- 如何不用额外变量交换两个数?
#include<stdio.h>
int main()
{
int a=8;
int b=2;
a = a ^ b;
//此时的a = a ^ b
b = a ^ b;
//换言之
//b = a ^ b ^ b;
//b = a ^ b ^ b;
//a = a ^ b;
a = a ^ b;
//换言之
//a = a ^ b ^ a ^ b ^ b;
printf("%d %d",a,b);
return 0;
}
a >> n 右移动运算,将a所有的位数向右移动n位
a << n 左移动运算,将b所有的位数向左移动n位
7.if 语句
if条件 主要应用于以特定的条件判断,然后进行相应的运算,流程图如下:
if(表达式){语句;}
if(…) {…} else {…}语句
1.用于双分支控制的条件语句;
2.用于非此即彼的关系时;
if...else if...else 语句