算术操作符

操作符

1.算术操作符

在写代码的时候一定会涉及到计算,C语言中为了方便运算,提供了一系列操作符,其中有一组操作符叫算术操作符,分别是:+ - * / %,都是双目操作符

注:操作符也被叫做:运算符,是不同的翻译,意思是一样的。

1.1 +和-

+和- 用来完成加法和减法,都是有两个操作数,位于操作符两端的就是他们的操作数,这种操作符也叫双目操作符

#include <stdio.h>

int main()
{
    int x = 4+22;
    int y = 61-23;
    printf("%d\r\n",x);
    printf("%d\r\n",y);
    return 0;
}

1.2 *

运算符*用来完成乘法

#include <stdio.h>

int main()
{
	int num=5;
	printf("%d\n",num*num);
	return 0;
}

1.3 /

运算符/用来完成除法

除号的两端如果是整数,执行的是整数除法,得到的结果也是整数

#include <sdtio.h>

int main()
{
    float x=6/4;
    int y =6/4;
    printf("%f\n", x); // 输出 1.000000
 	printf("%d\n", y); // 输出 1
    return 0;
}

//示例中,尽管变量x的类型是float浮点数,但是6/4得到的结果是1.0,而不是1.5,原因在于C语言里边的整数除法是整除,只会返回整数部分,丢弃小数部分,如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时C余元就会进行浮点数除法
#include <sdtio.h>

int main()
{
    float x=6.0/4;
    printf("%f\n", x); // 输出 1.500000
    return 0;
}

再看一个例子

#include <sdtio.h>

int main()
{	
    int score = 5;
    score=(score/20)*100;
    return 0;
}

//上面的代码,你可能觉得经过运算,score会等于25,实际上score等于0,因为score/20是整除,会得到一个0,
//为了得到一个预想的结果,改变如下
#include <sdtio.h>

int main()
{	
    int score = 5;
    score=(score/20.0)*100;
    return 0;
}

1.4 %

运算符%表示求模运算,即返回两个整数相除的余值,这个运算符只能用于整数,不能用于浮点数

#include <sdtio.h>

int main()
{	
    int x = 6%4 //2
    return 0;
}

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

#include <sdtio.h>

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

2.赋值操作符

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

赋值操作符=是一个随时可以给变量赋值的操作符

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

int a= 100; //初始化
a=100;		//赋值

2.1 连续赋值

赋值操作符可以连续赋值,如:

int a= 3;

int b =5;

int c = 0;

c=b=a+3;//连续赋值,从右向左依次赋值

C语言虽然支持连续赋值,但是写出的代码不容易理解,建议拆开写,方便观察代码的执行细节

int  a - 3;

int b =5;

int c =0;

b=a+3;

c=b;


2.2复合赋值

在写代码时,经常对一个数进行自增自减的操作:

int a = 10;

a=a+3;

a=a-2;

//这种代码C语言给了更方便的写法

int a = 10;

a+=3;

a-=2;

C语言中提供了复合赋值符

  • +=
  • -=
  • *=
  • /=
  • %=
  • >>=
  • <<=
  • &=
  • |=
  • ^=

3.单目操作符

前边的操作符都是双目操作符,有两个操作数,C语言中还有一些操作符只有一个操作数,被成为单目操作符,++ – +(正)-(负)都是单目操作符

3.1 ++

++是一种自增的操作符,又分为前置++和后置++

前置++



int a=10;

int b =++a;  //++的操作数是a,是放在a前面的,就是前置++

printf("a=%d,b=%d\r\n",a,b);

 在这里,计算顺序是,先+1再使用,a原来是10,先+1变成了11,再赋值给b,b也是11

int a = 10;

a = a+1;

b = a;

printf("a=%d b=%d\n",a , b);

后置++

int a=10;

int b =a;++  //++的操作数是a,是放在a后面的,就是后置++

printf("a=%d,b=%d\r\n",a,b);

 在这里,计算顺序是,先使用再+1,a的值先赋值给b,所以b是10,a原来是10,+1变成了11

int a = 10;

b = a;

a=a+1

printf("a=%d b=%d\n",a , b);

3.2 –

如果看懂了前置++,那前置--也是同理的,只是把+1变成了-1,即先-1后使用

int a = 10;

int b =--a;   //--的操作数是a,是放在a前面的,就是前置--

printf("a=%d,b=%d\r\n",a,b);

后置--,先使用后-1

int a = 10;

int b = a--;*//--**的操作数是**a**,是放在**a**的后⾯的,就是后置**--*

printf("a=%d b=%d\n",a , b);*//**输出的结果是:**9 10*

3.3 +和-

这里的+是正号,-是符号,都是单目操作符

运算符+对正负值没有影响,是一个完全可以省略的运算符,但是写了也不会报错

int a = +10;等价 int a = 10;

运算符- 用来改变一个值的正负号,负数的前面加上-就会得到正数,正数的前面加上-会得到负数



int a = 10;

int b = -a;

int c = -10;

printf("b=%d c=%d\n", b, c);*//**这⾥的**b**和**c**都是**-10*

int a = -10;

int b = -a;

printf("b=%d\n", b); *//**这⾥的**b**是**10*

4.强制类型转换

在操作符中还有一种特殊的操作符是强制类型转换,语法形式很简单

(类型)

int a = 3.14; //a的是int类型, 3.14double**类型,两边的类型不⼀致,编译器会报警告

为了消除这个警告,我们可以使用强制类型转换

int a = (int)3.14;//意思是将3.14强制类型转换为int**类型,这种强制类型转换只取整数部分

俗话说,强扭的瓜不甜,我们使用强制类型转换都是万不得已的时候使用,如果不需要强制类型转换就可以实现代码是最好的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值