数据类型与变量(2)
算术操作符 +,-,*,/,%
C语言中为了方便运算,提供了一系列操作符,其中有一组操作符叫:算术操作符。分别是:+ - * / %,这些操作符都是双目操作符
注:操作符也被叫做运算符,是不同的翻译,意思是一样的
+ 和 -
+和-用来完成加法和减法
+和-都是有2个操作数的,位于操作符两端的就是它们的操作数(a左操作数,b右操作数),这种操作符(有两个操作数)也叫双目操作符
以加法为例(减法同理):
#include <stdio.h>
int main() {
int a = 5;
int b = 3;
int c = a + b;//从右向左,将a+b的值存在c中
printf("%d", c);
return 0;
}
*
用来完成乘法
例:
#include <stdio.h>
int main() {
int num = 5;
printf("%d", num*num);
return 0;
}
/
用来完成除法
例1:
#include <stdio.h>
int main() {
int a = 6;
int b = 2;
int c = a / b;
printf("%d", c);
return 0;
}
例2:
#include <stdio.h>
int main() {
int a = 6;
int b = 4;
int c = a / b;
printf("%d", c);
return 0;
}
根据以上输出,可以得出:
/ 两端都是整数的时候,执行的是整数除法,只会返回整数部分,算不出小数
当除号两端至少有一个是浮点数时,才能计算出小数
故,将例2改为:
#include <stdio.h>
int main() {
float a = 6.0;
int b = 4;
float c = a / b;
printf("%f", c);
return 0;
}
printf在打印小数的时候,默认小数点后会打印六位
或者:
#include <stdio.h>
int main() {
int a = 6.0;
int b = 4;
double c = a *1.0/ b;//编译器会自动识别1.0为double类型
printf("%f", c);
return 0;
}
输出结果是一样的
%
表示求模(余),即返回两个整数相除的余值
只能用于整数,不能用于浮点数
#include <stdio.h>
int main() {
int a = 6 % 4;
printf("%d", a);
return 0;
}
当负数参与运算时:
#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 = 100;//初始化
a=200;//赋值,这里使用的就是赋值操作符
连续赋值
例:
#include <stdio.h>
int main() {
int a = 3;
int b = 5;
int c = 0;
c = b = a + 3;//连续赋值,从右向左依次赋值
//b = 6
//c = 6
return 0;
}
复合赋值
int a = 3;
a = a + 3;//a=6
a += 3;// +=复合运算符
a = a - 2;
a -= 2;// *= /= %=
复合运算符:
+= -=
*= /= %=
>>= <<=
&= |= ^=
单目操作符++,- -,+(正号),-(负号)
只有一个操作数的操作符
++和–
四种输出一样的语句:
a=a+1;
a+=1;
a++;//后置++
++a;//前置++
//不管是前置++还是后置++,都是+1的效果
a++与++a的区别:
a++:
#include <stdio.h>
int main() {
int a = 5;
int b = a++;
//相当于b=a,a=a+1
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
后置++,先使用,后+1
++a:
#include <stdio.h>
int main() {
int a = 5;
int b = ++a;
//a=a+1 b=a
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
前置++,先++,后使用
同理也可推出,前置- -和后置- -的区别:
a- -:
#include <stdio.h>
int main() {
int a = 5;
int b = a--;
//b=a a=a-1
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
后置- -,先使用,后-1
- -a:
#include <stdio.h>
int main() {
int a = 5;
int b = --a;
//a=a-1 b=a
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
前置- -,先- -,后使用
+(正号),-(负号)
例1:
#include <stdio.h>
int main() {
int a = +10;
printf("a=%d\n", a);
return 0;
}
例2:
#include <stdio.h>
int main() {
int a = -10;
int b = +a;
printf("b=%d\n", b);
return 0;
}
可以看出,正号不改变输出的值,可省略
#include <stdio.h>
int main() {
int a = -10;
int b = -a;
printf("b=%d\n", b);
return 0;
}
负号用来改变一个值的正负,负数前面加-就得到正数
强制类型转换
(类型)
例:
#include <stdio.h>
int main() {
int a = (int)3.14;//将double转化为int,只会保留整数部分,小数部分直接丢弃
printf("a=%d\n", a);
return 0;
}
ps:
又是一个新的早晨
生活中,我们总是不断地被定义,不断地被贴上各种标签,却忘了遵循自己的内心
允许自己做自己,也允许别人做别人
人生是自己的,我们可以是任何样子
——珍妮特·温特森
新的一天,加油!