C语言运算符总结
C语言之所以无所不能,很大原因在于它有强大的计算能力。C语言一共有34种运算符。
a. + 加法运算符
除开能做加法运算,还能表示正号:+10
b. - 减法运算符
除开能做减法运算,还能表示符号:-10
c. * 乘法运算符
注意符号,不是x,而是*
d. / 除法运算符
整数除于整数,还是整数
e. % 取余运算符(模运算)
两个整数相除之后的余数
拓展知识点:
(1) 自动类型转换
(2) 强制类型转换
(3) 自动类型提升
//代码演示:
// 两个整数相除
int a = 7 / 3; // 结果为:2
// %取余结果的正负性只跟%左边的数值有关
int b = -7 % 3; //结果为: -1
int c = 7 % 3; //结果为: 1
// 自动类型转换(double->int)
int a = 10.8;
// 强制类型转换(double->int)
int b = (int) 10.5;
// 自动类型提升(int->double)
double c = 10.6 + 6;
// 利用算术运算符的例子
#include
/*
提示用户输入一个时间的秒数,比如500秒就输入500,然后输出对应的分钟和秒,比如500s就是8分钟20秒
*/
int main()
{
// 1.提示用户输入时间
printf("请输入一个时间值(秒):\n");
// 2.接收用户输入的时间
int time;
scanf("%d", &time);
// 3.转换成对应的分钟和秒
int minute = time / 60; // 分钟
int second = time % 60; // 秒
printf("%d秒 = %d分钟%d秒\n", time, minute, second);
return 0;
}
心得体会:
(1)两个整数相除,结果为整数,1/2 的值是0
(2)取余%两边都是整数
(3)取余结果的正负性只跟%左边的数值有关
(4)自动将大类型转换为了小类型,会丢失精度
a. < 小于运算符
b. > 大于运算符//代码演示:
int a = 10;
// 根据关系运算的结果来判断
if (10 == a) // 不推荐写:a == 0;
{
printf("条件成立");
}
else
{
printf("条件不成立");
}
心得体会:
(1)关系运算的结果成立就为"真"(比如7>=3),就返回 1;不成立则为"假"(比如7<3),就返回 0 。
(2)在C语言中,没有boolean类型,任何非0值都为"真",只有0值才为"假"。
(3)关系运算符的结合方向为“从左往右”
a. && 逻辑与运算符
使用格式:“条件A&& 条件B”
又称 “短路运算符” ,如果第一个表达式不成立,后面一个表达式不参与计算
b. || 逻辑或运算符
使用格式:“条件A || 条件B”
如果第一个表达式成立,则后面一个表达式不参与计算
c. ! 逻辑非运算符
使用格式:“! 条件A”
如果条件成立,就返回0;如果条件不成立,就返回1
// 逻辑与 条件1 && 条件2
int a = 10>3 && 7<6;
int a = 0 && 10;
// 逻辑或 条件1 || 条件2
int a = 10;
int b = 10;
int c = (a<5) || (b++ - 10);
printf("a=%d, b=%d, c=%d\n", a, b, c);
// 逻辑非 !条件
// 如果条件成立,就返回0;如果条件不成立,就返回1
// int a = !(10>8);
int a = !-10;
printf("a=%d\n", a);
心得体会:
(1)C语言规定:任何非0值都为“真”,只有0才为“假”,同样适合逻辑运算符。
(2)逻辑运算的结果也只有两个:成立就为"真",返回1;不成立就为"假",返回0。
(3)逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > &&> ||
(1)简单赋值运算符:= // int a = 1;
(2)复合赋值运算符int a = 10;
// 复合赋值运算符
a += 5; // a = a + 5;
a *= 5; // a = a * 5;
a += 5 + 6 + 4; // a = a + (5 + 6 + 4);
a. ++ 自增运算符
b. -- 自减运算符//代码演示
a++; // 先赋值,后自增
++a; // 先自增, 后赋值
a--; // 先赋值, 后自减
--a; // 先自减, 后赋值
心得体会:
自增自减只能用于变量上,不能用于常量上。比如:5++是错误的;
(1) 用逗号运算符连接起来的表达式称为逗号表达式,它的一般形式为:
表达式1, 表达式2, … …, 表达式n// 代码演示
int a = 2;
int b = 0;
int c;
c = (++a, a *= 2, b = a * 5); //先计算++a,再计算a *= 2,最后计算b = a * 5;
printf("c = %d", c);
心得体会:
(1)明白整个整个逗号表达式的值是最后一个表达式的值即可,其它蛮简单。
// 代码演示
int a = 6;
int b = (a > 5) ? 10 : 9; // 如果a > 5 成立,则a = 10 ,否则 a = 9;
// 实例
//计算2个整数之间的最大值
int a = 10;
int b = 99;
int c = a>b ? a : b;
printf("c is %d\n", c);
心得体会:
(1)三目运算符可以用if(表达式1 ){表达式2} ; else {表达式3}来表示。
a. & 按位与
常跟1进行按位与,得到某一位上面的值,可以用来判断奇偶性。
b. | 按位或
c. ^ 按位异或e. << 左移
// 7< f. >> 右移 // 7>>n ,等同于 7 / 2的n次方。 心得体会: (1)要知道按位与的应用,比如说跟1位与,可以得到某一位的值。用于判断奇偶性和打印十进制数对应的二进制代码 (1)按位异或可以用于交换两个整型变量的值。 心得体会: sizeof可以一个变量或者一个常量、一种数据类型所占的内存字节数,但是计算数据类型的字节数时要用括号括起来。 //实例演示
//使用位异或运算符交换两个变量的值
int a = 5;
int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d, b=%d\n", a, b);
/*
写一个函数,用来输出整数在内存中的二进制形式
*/
#include
9. sizeof
sizeof 可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
// 实例演示sizeof的3种形式
// (1) sizeof( 变量\常量 )
sizeof(5);
char c = 'a';
sizeof(c);
// (2) sizeof 变量\常量
sizeof 10;
char c = 'a';
sizeof c;
// (3) ( 数据类型 )
sizeof(float); // 其中的括号不能省略