一、算数运算符
符号有:+、-、*、/、%
1.区分开数学中的算数运算和c语言中的算数运算。
举个除法的例子:
3/2 = 1 而不是数学计算中的3/2 = 1.5
那么要怎么才能是数学计算的结果呢?
如下:
3.0 / 2 = 1.5
我们把3/2这种没有小数的型式称为整数除法
3.0/2有小数的型式称为浮点数除法
*新手朋友特别要注意这个:
区分开数学和c语言的不同
2.计算口诀
2.1通用口诀:
有整数的计算——结果为整数
有小数的计算——结果为小数
2.2取余细节:
运算的数据必须全部是整数
获取余数的正负,是跟第一个数字保持一致
eg.
#include <stdio.h>
int main()
{
printf("%d", 10 % 3); //结果1
printf("%d", -10 % 3);//结果-1
printf("%d",10 % -3);//结果1
return 0;
}
3.进阶操作
拆分数值:(利用整除和求余)
意思是将数字的每一位都拆分出来
#include <stdio.h>
int main()
{
//g表示个位,s表示十位,b表示百位
int g,s,b;
int a = 134;
g = a % 10;
s = a/10%10;
b = a/100%10;
printf("个位是%d\n十位是%d\n百位是%d\n",g,s,b);
return 0;
}
总结:
个位——数值%10
十位——数值/10%10
百位——数值/100%10
......
是多少位就除10多少平方,再求余。
4.转化规则
4.1隐式转换:
4.1.1定义
把取值范围小的,转换为取值范围大的。
4.1.2规则
a.取值范围小的,和取值范围大的进行计算,小的会自动提升为大,的再进行计算。
b.short、 char类型的数据在运算的时候,先提升为int,再进行计算。
4.1.3如何看范围的大小
char < short < int < long < long long < float < double
eg.
#include <stdio.h>
int main()
{
short a = 10;
short b = 20;
//short 自动转换为 int
int c = a + b;
printf("%d",c);
return 0;
}
4.2强制转换
4.2.1定义
如果想把取值范围大的,赋值给取值范围小的,就需要强制转换
4.2.2格式:
目标数据类型 变量名 = (目标数据类型)被强制转换的数据
eg.
#include <stdio.h>
int main()
{
short a = 10;
short b = 20;
//将int类型转换为short类型
short c = (short) (a + b);
//记得对a+b整体框起来
printf("%d",c);
return 0;
}
注意:
强制转换的正确格式:
short c = (short) (a + b);
错误的强制转换格式:
short c = short (a + b);
弊端:
有可能导致数据错误!
4.3字符串相加
char 类型的数据在运算的时候, 通过ASCLL码表,先提升为int,再进行运算。
eg.
#include <stdio.h>
int main()
{
char a = 'A';
printf("%d",a + 1);//显示ASCLL码值
return 0;
}
如果我就想看他的字母为多少,怎么办?
改变一下占位符!
#include <stdio.h>
int main()
{
char a = 'A';
printf("%c",a + 1);//显示字符
return 0;
}
4.3.1 ASCLL码表
重点记住三个:
0——48
A——65
a——97
A 与 a相差32个值。
二、自增、自减运算符
1.自增运算符(++)
1.1定义:
a++ 与 ++a都是对a变量进行+1
可以简单理解为:a =a + 1
1.2单独使用:
a++ 与 ++a 的效果一样
#include <stdio.h>
int main()
{
int a;
a = 0;
a++;
printf("a++后的值为%d",a);
++a;
printf("++a后的值为%d",a);
return 0;
}
1.3参与计算:
a++ 与 ++a 的效果就会不一样了
a++是先用,再自增
++a是先自增,再使用
#include <stdio.h>
int main()
{
int a = 6;
int sum=0;
sum = a++;//先把a赋值给sum,再对a进行+1
printf("把a++赋值给sum,sum = %d\n",sum);
printf("a++后a的值为:%d\n",a);
//把sum重新变成0
sum = 0;
sum = ++a;//先把a进行+1,再把a赋值给sum
printf("把++a赋值给sum,sum= %d\n",sum);
printf("++a后a的值为:%d\n",a);
return 0;
}
2.自减运算符(--)
1.1定义:
a-- 与 --a都是对a变量进行-1
可以简单理解为:a =a- 1
1.2单独使用:
a-- 与 --a 的效果一样
#include <stdio.h>
int main()
{
int a;
a = 0;
a--;
printf("a--后的值为%d",a);
--a;
printf("--a后的值为%d",a);
return 0;
}
1.3参与计算:
a-- 与 --a 的效果就会不一样了
a--是先用,再自增
--a是先自增,再使用
#include <stdio.h>
int main()
{
int a = 6;
int sum=0;
sum = a--;//先把a赋值给sum,再对a进行-1
printf("把a--赋值给sum,sum = %d\n",sum);
printf("a--后a的值为:%d\n",a);
//把sum重新变成0
sum = 0;
sum = --a;//先对a进行-1,再把a赋值给sum
printf("把--a赋值给sum,sum= %d\n",sum);
printf("--a后a的值为:%d\n",a);
return 0;
}
三、赋值运算符分类
在 C 语言中,赋值运算符 =
用于将一个值赋给一个变量。以下是赋值运算符的一些基本使用方法:
#include <stdio.h>
int main()
{
int num = 10; // 定义一个整数变量 num 并初始化为 10
int anotherNum;
printf("num = %d\n", num);
num = 20; // 将 num 的值修改为 20
printf("num = %d\n", num);
anotherNum = num + 5; // 将 num 的值加 5 后赋给 anotherNum
printf("anotherNum = %d\n", anotherNum);
return 0;
}
在上述代码中,我们首先定义了一个整数变量 num
并将其初始化为 10
。然后,我们使用赋值运算符将 num
的值修改为 20
。接下来,我们定义了另一个整数变量 anotherNum
,并将 num
的值加 5
后赋给 anotherNum
。
除了简单的赋值操作,赋值运算符还可以与其他运算符结合使用,形成复合赋值运算符,如 +=
、-=
、*=
、/=
等。例如:
#include <stdio.h>
int main()
{
int num = 10;
num += 5; // 相当于 num = num + 5
printf("num = %d\n", num);
num -= 3; // 相当于 num = num - 3
printf("num = %d\n", num);
num *= 2; // 相当于 num = num * 2
printf("num = %d\n", num);
num /= 4; // 相当于 num = num / 4
printf("num = %d\n", num);
return 0;
}
注意点:
1.不要在+=的中间添加空格。
2.不要把“="写成了”==“。
四、关系运算符
在 C 语言中,关系运算符用于比较两个值的关系。关系运算符包括:
>
(大于)<
(小于)>=
(大于等于)<=
(小于等于)==
(等于)!=
(不等于)
关系运算符的运算结果为整数类型,通常是 0
或 1
。如果关系成立,结果为 1
;如果关系不成立,结果为 0
。
以下是关系运算符的示例代码:
#include <stdio.h>
int main()
{
int num1 = 10, num2 = 5;
// 大于
if (num1 > num2)
{
printf("%d 大于 %d\n", num1, num2);
}
// 小于
if (num1 < num2)
{
printf("%d 小于 %d\n", num1, num2);
} else {
printf("%d 不小于 %d\n", num1, num2);
}
// 大于等于
if (num1 >= num2)
{
printf("%d 大于等于 %d\n", num1, num2);
}
// 小于等于
if (num1 <= num2)
{
printf("%d 小于等于 %d\n", num1, num2);
} else {
printf("%d 不小于等于 %d\n", num1, num2);
}
// 等于
if (num1 == num2)
{
printf("%d 等于 %d\n", num1, num2);
}
else
{
printf("%d 不等于 %d\n", num1, num2);
}
// 不等于
if (num1!= num2)
{
printf("%d 不等于 %d\n", num1, num2);
}
return 0;
}
7.总结
7.1不要把”==“写成”=“
7.2不要在 >= 之间写空格
五、逻辑运算符
在 C 语言中,逻辑运算符用于对逻辑值(真或假)进行操作。逻辑运算符包括:&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)。
&&
(逻辑与):当且仅当两个操作数都为真时,结果为真。||
(逻辑或):只要两个操作数中有一个为真,结果为真。!
(逻辑非):将操作数的逻辑值取反。
以下是一些示例:
#include <stdio.h>
int main() {
int a = 5, b = 10, c = 15;
// 逻辑与
if ((a < b) && (b < c))
{
printf("符号条件\n");
}
else
{
printf("不符合条件\n");
}
// 逻辑或
if ((a > b) || (b < c))
{
printf("符合条件\n");
}
else
{
printf("不符合条件\n");
}
// 逻辑非
if (!(a == b))
{
printf("a与b不相等\n");
}
else
{
printf("a与b相等\n");
}
return 0;
}
在使用逻辑运算符时,需要注意以下几点:
- 逻辑运算符的操作数通常是关系表达式或其他逻辑值。
&&
和||
运算符具有短路特性。对于&&
运算符,如果第一个操作数为假,那么就不会计算第二个操作数;对于||
运算符,如果第一个操作数为真,那么就不会计算第二个操作数。!
运算符是一元运算符,它只对一个操作数进行操作。- 优先级:
! > && > || >赋值
短路效果的例子:
1.&&的短路效果应证了——两真为真
#include <stdio.h>
int main()
{
int a = 1, b = 5;
a > 10 && ++b ;
printf("a =%d\nb = %d",a,b);//a = 1,b = 5
return 0;
}
2.||的短路效果应征了——一真为真
#include <stdio.h>
int main()
{
int a = 1, b = 5;
a > 0 || ++b;
printf("a = %d\nb= %d\n",a,b);//a = 1, b = 5
return 0;
}
六、三元运算符
格式: 关系表达式? 表达式1:表达式2
关系表达式为真的化执行表达式1,为假的的话执行表达式2
例子:
#include <stdio.h>
int main()
{
int max = 0;
int a = 1,b =2;
//找最大值
max =a > b? a:b;
printf("最大值max = %d",max);
return 0;
}
七、逗号运算符
逗号运算符,它用于将多个表达式连接成一个表达式,并从左到右依次计算这些表达式。逗号运算符的最终结果是最后一个表达式的值。
例如,在 C 语言中,以下代码展示了逗号运算符的使用:
int a = 1, b = 2, c;
c = (a++, b++, a + b);
在这个例子中,首先计算 a++
,a
的值变为 2。然后计算 b++
,b
的值变为 3。最后计算 a + b
,结果为 5,并将其赋给 c
。
需要注意的是,逗号运算符的优先级是所有运算符中最低的,所以在使用时要注意结合性和优先级的问题,以避免出现意外的结果。
八、总结
1.新手朋友要区分开,数学中的算数运算和C语言的算数运算
2.学会自增运算符和自减运算符(这个理解可能是个难点)
大家一起加油!努力!