目录
1.算数运算符与算数表达式
算术运算符即+,-,*,/,%(加减乘除取余),基本数学知识不过多介绍,值得注意的是/和%运算符被除数不可以为0,且%运算的操作数必须是整型,不然会报错。
另外需注意的是,在C语言中,整数与整数进行算数运算结果还是整数类型,即使有小数部分也会直接舍弃,比如3/2=1,而不是1.5;整数浮点数、浮点数运算结果为浮点数,比如3/2.0=1.5。
算数运算式的优先级:第一级:乘除取余,第二级:加减 (从左往右,有括号先算括号里的)
实例:将一个3位数的百十个位分别输出,用空格隔开
//输入一个三位数,将百十个位分别输出,用空格隔开
#include<stdio.h>
int main() {
int a;
scanf("%d", &a);
printf("%d %d %d", a / 100 % 10, a / 10 % 10, a % 10);
return 0;
}
2.复合运算符
在赋值运算符“=”前加上其他算术运算符,就构成复合运算符。如下:
a+=10; //等价于a=a+10;
a-=10; //等价于a=a-10;
a*=10; //等价于a=a*10;
a/=10; //等价于a=a/10;
a%=10; //等价于a=a%10;
a*=3+5 //等价于a=a*(3+5),而不是a=a*3+5
//a它会把=后的当做一个整体对待,相当于加了括号
3.自增自减运算符
自增运算符++,自减运算符--。作用是将变量的值加一和减一。它的操作数只能是一个变量,不能是常量或者表达式,例如a++(后自增) ,++a(前自增) , a--(后自减) , --a(前自减)都是对的,但是5++,(a+b)++是错的。
C语言中任何一个表达式都会返回一个值,a*b这个表达式就返回a*b的结果,同理,+-/%也是。下面来讨论++,--。如果是变量++,返回变量自增前的值;如果是++变量,返回变量自增后的值:
a=b++;等价于a=b; b=b+1;
a=++b;等价于b=b+1; a=b;
然而不论是变量++还是++变量,最终变量的值都会+1。而--同理。
展示:变量++
#include<stdio.h>
int main() {
int a = 9;
printf("%d\n", a++);//输出表达式a++的值
printf("%d\n", a);//输出变量a的值
return 0;
}
运行结果:
展示:++变量
#include<stdio.h>
int main() {
int a = 9;
printf("%d\n", ++a);//输出表达式++a的值
printf("%d\n", a);//输出变量a的值
return 0;
}
运行结果:
4.强制类型转换运算符
强制类型转换运算符由“()”和数据类型两部分构成形式为(数据类型),一般形式为:
(数据类型)常量
(数据类型)变量
(数据类型)(表达式)
5.关系运算符和关系表达式
<小于:如果左侧的数小于右侧,则返回1,否则返回0
<=小于等于:如果左侧的数小于等于右侧,则返回1,否则返回0
>大于:如果左侧的数大于右侧,则返回1,否则返回0
>=大于等于:如果左侧的数大于等于右侧,则返回1,否则返回0
==等于:如果左侧的数等于右侧,则返回1,否则返回0
!=不等于:如果左侧的数不等于右侧,则返回1,否则返回0
6.逻辑运算符与逻辑表达式
用于对程序中的逻辑值进行运算,逻辑值有两种:真或者假,用0表示假,非0表示真。结合上面关系表达式,如果值为1则表示真,值为0表示假。
逻辑运算符:
&&(逻辑与):a&&b,ab同时为真才真,返回1,否则为假返回0
||(逻辑或):a||b,ab同时为假才假,返回0,否则为真返回1
!(逻辑非):!a,若a为假返回真,若a为真返回假
短路运算:其实是对&&和||的一种优化,表现为如果左侧为假那么&&的右侧就不再进行计算了,无论如何结果都为假; 如果左侧为真那么||的右侧就不再进行计算了,无论如何结果都为真。
逻辑运算常常与关系运算相结合,关系运算的结果为0或1,也就是假或者真。
7.条件运算符与条件表达式
一般形式为:表达式1?表达式2:表达式3
运算规则为:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。
实例:输入两个整数,输出较大的一个数
#include<stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d", a > b ? a : b);
return 0;
}