1.运算符
(1)运算符相关概念
(2)赋值运算符
(3)算术运算符
(4)关系运算符
(5)逻辑运算符
(6)其他运算符
(7)位运算符
1、运算符的相关概念
运算符:是具有一定运算规则的符号
运算符的分类:
赋值运算符
算术运算符
关系运算符
逻辑运算符
其他运算符
位运算符
按照操作数分:
单目运算符 ~7 a++ ++b
双目运算符 + - * / %
三目运算符 ? :
表达式:具有一定意义的式子,他可以是常量、变量、操作数和运算符的组合
表达式是一定有结果的
运算符优先级:
() 单目 双目 三目 赋值组合
双目:算术 关系 逻辑
2、算术运算符
/:除
规则:两边都是整形,结果是整形。如果有一个是小数结果就是小数。
%(取余、取模)
规则:两边必须是整数,整除关系使用%看结果是否为0.
需求:输入一个三位数,分离出个位 十位 百位?
int a;
scanf("%d",&a);
printf("百%d 十%d 个%d",a/100%10,a/10%10,a%10);
3、关系运算符
符号:> >= < <= ==(等于) !=(不等于)
结果:看数据之前的关系是否成立,成立为真(1),不成立为假(0)
4、逻辑运算符
&&(逻辑与) ||(逻辑或) !(逻辑非)
C语言中非0即为真,0即为假
逻辑运算符的结果:0 或者 1
&&(逻辑与)
格式:表达式1 && 表达式2
规则:全真为真,有假则假
表达式1 表达式2 表达式1 && 表达式2
真 真 真
真 假 假
假 ---不需要进行计算 假
int a=5,b=4;
int c=(a>3) && (b%2==0);
printf("%d\n",c); //1
int d=(a<3) && (b=5);
printf("%d%d\n",d,b); //0 4
场景:同时 并且
||(逻辑或)
格式:表达式1 || 表达式2
规则:全假为假,有真则真
表达式1 表达式2 表达式1 || 表达式2
假 假 假
假 真 真
真 ---不需要进行计算 真
int a=5;
int b=4;
int c=(a>3) || (b%2==0);
printf("%d\n",c); //1
int d=(a<3) || (b=5);
printf("%d%d\n",d,b); //1 5
场景:或者
!(逻辑非)
格式:!表达式
规则:真变假,假变真
表达式1 !表达式
真 假
假 真
场景:判断表达式是否为假
如果 !x (如果 x==0) 两个意思相同
5、其他运算符:
自增自减 ++ --
如果a++ ++a作为独立语句使用++在前在后没有区别
如果a++ ++a参与运算,++a是先加后用,a++是先用后加
int c=5;
int d=5;
int e=++c; //c=c+1; c=6; e=6;
int f=d++; //f=5 d=d+1; d=6
三目运算符 ? : (小if-else)
格式: 表达式1?表达式2:表达式3
规则:先计算表达式1,如果为真,执行表达式2或者表达式2的结果作为三目运算符表达式的结果
如果为假,执行表达式3或者表达式3的结果作为三目运算符表达式的结果
int n;
scanf("%d",&n);
n%2==0 ? printf("偶数") : printf("奇数");
int n=(3>5 ? 3 : 5); //5
复合运算符
+= -+ *= /= &= |= ^= <<= >>=
int a=5;
a+=5; //a=a+5;a=10;
逗号运算符
从左往右,最后一个表达式的结果和类型,作为逗号运算符的结果和类型。
int a=5;
int d=(a++,a+5,a-3); //d=3
2.流程控制语句
如果……否则……
if……else
if(条件表达式)
{
//语句块1,条件表达式为真时执行
}
else
{
//语句块2,条件表达式为假是执行
}
输入一个数据,如果数据是偶数就是输出偶数,否则就输出奇数
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
if(a%2==0)
{
printf("偶数");
}
else
{
printf("奇数");
}
return0;
}