算术、赋值、单目操作符

算术操作符

算术操作符:

  • +:加
  • -:减
  • *:乘
  • /:除
  • %:取模

C语言为了方便运算,提供了一系列操作符,其中一组操作符叫:算术操作符。算术操作符都是双目操作符。
双目操作符:在操作符的两端要有两个操作数,叫做双目操作符

+和- 

+和-就和数学中的加减运算符(操作符也被叫做运算符,只是翻译不一样,意思是一样的。)是一样的,求两个数的和或者差。

#include <stdio.h>

int main()
{
	int num1 = 0;
	int num2 = 10;
	int num3 = 20;
	
	num1 = num2 + num3;
	printf("num1 = %d\n", num1);//10 + 20 输出30
	num1 = num3 - num2;
	printf("num1 = %d\n", num1);//20 - 10 输出10
	printf("num1 = %d\n", num1 = 5 + 6);//5 + 6 输出11
	printf("num1 = %d\n", num1);//上方表达式将num1重新赋值了所以输出11
}
*

运算符*也和数学中的乘是一样的效果。用来计算两个操作数的积

#include <stdio.h>

int main()
{
	int num1 = 0;
	int num2 = 10;
	int num3 = 20;
	int num4 = 30;
	num1 = num2 * num3;
	printf("num1 = %d\n", num1);//10 * 20 输出200
	num1 = num3 * num2;
	printf("num1 = %d\n", num1);//20 * 10 输出200
	printf("num1 = %d\n", num1 = 5 * 6);//5 * 6 输出30
	printf("num1 = %d\n", num1);//上方表达式将num1重新赋值了所以输出30
}
/

运算符/是数学中的除法余(整数除法),而不是除法。举例:5 / 2 = 2...1,5除2商2余1.那么正常是应该商2.5,但是在两个操作数都为整数的时候运算结果只取商。想要让他商小数在下面浮点数介绍。

#include <stdio.h>

int main()
{
	int num1 = 0;
	int num2 = 10;
	int num3 = 20;
	num1 = num2 / num3;
	printf("num1 = %d\n", num1);//10 / 20 输出0 10 / 20 = 0...10
	num1 = num3 / num2;
	printf("num1 = %d\n", num1);//20 / 10 输出2 20 / 10 = 2...0
	printf("num1 = %d\n", num1 = 5 / 6);//5 / 6 输出0 5 / 6 = 0...5
	printf("num1 = %d\n", num1);//上方表达式将num1重新赋值了所以输出0
}
%

运算符%是用来取模的,也就是上面整数除法,5 / 2 = 2...1。运算结果是后面的余数而不是商

#include <stdio.h>

int main()
{
	int num1 = 0;
	int num2 = 10;
	int num3 = 20;
	num1 = num2 % num3;
	printf("num1 = %d\n", num1);//10 % 20 输出10 10 % 20 = 0...10
	num1 = num3 % num2;
	printf("num1 = %d\n", num1);//20 % 10 输出0 20 % 10 = 2...0
	printf("num1 = %d\n", num1 = 5 % 6);//5 % 6 输出5 5 / 6 = 0...5
	printf("num1 = %d\n", num1);//上方表达式将num1重新赋值了所以输出5
}
浮点数算术操作符

在C语言中算术操作符+、-、*、/两边的操作数都可以有小数,%的操作数两边必须要为整数。
如果想要得到的结果输出为小数那么就必须要操作数最少有一个是小数,且被赋值的变量要是浮点类型变量,且要根据数据类型使用对应占位符。

#include <stdio.h>

int main()
{
	float num1 = 1.0f;//如果是一个float类型的数据需要在后面加上一个小写的f告诉计算机这是float数据,如果不带f计算机默认认为是double类型
	float num2 = 10.0f;
	int num3 = 20;
	double num4 = 5.3;
	num1 = num2 + num3;
	printf("%f\n", num1);//浮点型占位符%f,浮点数无特殊指定默认输出小数点后六位,也就是输出30.000000
	num3 = num1 - num3;//输出10,
	printf("%d\n", num3);//num3是整型所以使用占位符%d。上面num1被赋值为30.000000,减去num3(20)然后由于是整型所以等于10
	//剩下*、/符号也是一样的,这里不做演示。切记运算符%两边操作数必须要是整数
}
负数取模 

负数取模的规则是,结果的正负由第一个运算数的正负号来决定

#include <stdio.h>

int main()
{
    printf("%d\n", 11 % -5);//输出1
    printf("%d\n", -11 % -5);//输出-1
    printf("%d\n", -11 % 5);//输出-1
    return 0;
}

赋值操作符:=和复合赋值

=

在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值叫做赋值

int a = 0; //初始化
a = 200; //赋值
连续赋值
int a = 0;
int b = 3;
b = a = a + 3;//连续赋值,从右往左一次赋值,先把a + 3的值赋值给a 再把a的值赋值给b

C语言支持连续赋值,但是这样写出的代码不容易理解,不建议这么书写,建议拆开为多个语句书写,这样方便观察。

复合赋值符

在写代码时,经常需要对一个数进行自增、自减、自乘、自除的操作

int a = 10;
a = a + 1;
//可以使用复合赋值符改写成如下形式
a += 1;


int b = 20;
b = b - 10;
//可以使用复合赋值符改写成如下形式
b -= 10;



int c = 30;
c = c * 10;
//可以使用复合赋值符改写成如下形式
c *= 10;



int d = 40;
d = d / 10;
//可以使用复合赋值符改写成如下形式
d /= 10;

C语言提供了很多复合赋值操作符

+=              加法赋值运算
-=              减法赋值运算
*=              乘法赋值运算
/=              除法赋值运算
%=              求余赋值运算符
&=              AND位赋值运算符
|=              OR位赋值运算
^=              NOT位赋值运算
<<=             位左移赋值运算
>>=             位右移赋值运算

单目操作符:++、--、+、-

单目操作符:操作符只有一个操作数

++和--

++:加加操作符,效果是让操作数自增1
--:减减操作符,效果是让操作数自减1

前置++和前置--

当书写形式是 ++变量名(或者 --变量名)的时候就表示先计算变量自增1(或者自减1)再把它赋值给赋值符左边的操作数
计算口诀:前置  先+1(或者-1),后使用

#include <stdio.h>

int main()
{
	int a = 0;
	int b = ++a;//前置++代表先让a自加1,然后再赋值给b。
	printf("%d %d\n", a, b);//输出 1 1;
	int c = --a;//前置--代表先让a自减1,然后再赋值给c。
	printf("%d %d\n", a, c);//输出 0 0 因为经过上面的运算此时a的值是1

}
后置++和后置--

当书写形式是 变量名--(或者 变量名--)的时候就表示先把它赋值给赋值符左边的操作数再计算变量自增1(或者自减1)
计算口诀:后置  先使用,后+1(或者-1)

#include <stdio.h>

int main()
{
	int a = 0;
	int b = a++;//后置++代表先让a赋值给b,然后再自加1。
	printf("%d %d\n", a, b);//输出 1 0;
	int c = a--;//后置--代表先让a赋值给c,然后再自减1。
	printf("%d %d\n", a, c);//输出 0 1 因为经过上面的运算此时a的值是1

}

tips:不管是前置还是后置++(--)都会改变(操作数)变量的值。浮点数也可以使用++(--)操作符,也是自增或自减1(1.0);++(--)可以与变量,单独作为一个语句,也就是可以写成++a;

#include <stdio.h>

int main()
{
	float a = 1.5f;
	double b = a++;//后置++代表先让a赋值给b,然后再自加1。
	printf("%f %lf\n", a, b);//输出 2.500000 1.500000;//double的占位符是%lf,float占位符是%f
	float c = a--;//后置--代表先让a赋值给c,然后再自减1。
	printf("%f %f\n", a, c);//输出 1.500000 2.500000 因为经过上面的运算此时a的值是1

}
 +

单目操作符:+ 正号,不是加而是正号。一般默认忽略不写

int a = +2;//等同于 int a = 2;
-

单目操作符:- 负号,不是减而是负号。

int a = -2;

强制类型转换

C语言中强制类型转换语法

#include <stdio.h>

int main()
{
	int a = 100;
	double c = 3.14;

	(short)a;//此语句并没有把a原本的类型转换为short;
	short b = (short)3.14;//此语句是把3.14(double)强制转换成short类型赋值给b
	b = (short)c;//将(double)c强制类型转换为short类型赋值给b
	//(数据类型)变量名
	printf("%zd", sizeof((short)a));//输出2
}

tips:一般不建议强制类型转换,除非你知道这个值就是这个类型的。强制类型转换都是万不得已的时候使用。尽量不要让代码需要强制类型转换。强制类型转换是单目操作符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值