课堂笔记两次合集
3.运算符
目录
3.运算符
3.1.算术运算符
3.2.赋值运算符
3.3.增1、减1运算符
3.4.关系运算符
3.5.逻辑运算符
3.6.条件运算符
3.7.类型转换
3.8.基本输入、输出函数
3.8.1.字符输出函数putchar()
3.8.2.字符输入函数getchar()
3.8.3.格式化输入函数printf()
3.8.4.格式化输出函数scanf()
3.1.算术运算符
算术运算符及其含义
运算符 | 类型 | 运算 | 含义 |
---|---|---|---|
- | 单目 | -x | 取负值 |
* | 双目 | x*y | 乘法运算 |
/ | 双目 | x/y | 除法运算 |
% | 双目 | x%y | 求余(模)运算 |
- | 双目 | x-y | 减法运算 |
+ | 双目 | x+y | 加法运算 |
算术运算符使用时需要注意的点:
①两个整数做除法运算,结果会舍去小数部分。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d",6/4);
return 0;
}
运行结果为:
结果果然只保留了整数部分的1。
BUT,当运算中有一个数为实型数据,则结果为double型。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d",6.0/4);
return 0;
}
运行效果则变为:
②%求余运算限定参与运算的两个操作数为整数。左边叫被除数,右边叫除数。
运算时结果为余数,且余数的符号与被除数的符号相同。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d",-6%4);
return 0;
}
运行效果为:
算术运算符的优先级与结合性
运算符 | 类型 | 优先级 | 结合性(运算方向) |
---|---|---|---|
- | 单目 | 高 | 从右向左 |
*/% | 双目 | 较高 | 从左向右 |
+- | 双目 | 最低 | 从左向右 |
例子:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a=1,b=-4,c=3;
int x1,x2;
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("X1=%d\nX2=%d",x1,x2);
return 0;
}
运行可得:
该程序中sqrt为计算平方根的数学库函数。
sqrt需要在程序的开头加上编译预处理命令
3.2.赋值运算符
- 简单的赋值运算符“=” 变量名=表达式; “=”右边为任何合法的表达式,也可以是另一个赋值表达式,即“=”可以连用。 赋值只能左边是变量
- 复合赋值运算符 在简单赋值运算符=前加一个双目运算符,就构了复合赋值运算符。
变量名 复合赋值运算符 表达式
例如:a+=3等价于a=a+3;
3.3.增1、减1运算符
i++与++i是有区别的。
i++是在使用变量i之后,再自身加1;
++i是在使用变量i之前自身加上1
※它们只能运用于简单的变量,常量和表达式是不能做这两种运算的,如8++和(m+n)++都是错的。运算方向是“自左向右”。例如:
int i = 3;
printf(“%d\n”,-i++);
程序运行结果:-i++的值为-3,i的值为4。
3.4.关系运算符
关系运算符
运算符 | 运算 | 含义 |
---|---|---|
< | x<y | 小于 |
> | x>y | 大于 |
<= | x<=y | 小于等于 |
>= | x>=y | 大于等于 |
== | x==y | 等于 |
!= | x!=y | 不等于 |
用于判别真假,用0表示假,用非0表示真。
计算关系表达式的值:成立是则运算结果为1,表示逻辑为真;反之,结果为0,表示逻辑为假。
判断关系表达式的值:用0表示假,用非0表示真。
3.5.逻辑运算符
运算符 | 类型 | 运算 | 含义 | 优先级 | 优先级 |
---|---|---|---|---|---|
! | 单目 | !x | 逻辑非 | 高 | 从右到左 |
&& | 双目 | x&&y | 逻辑与 | 较高 | 从左到右 |
|| | 双目 | x||y | 逻辑或 | 低 | 从左到右 |
用逻辑运算符连接操作数组成的表达式称为逻辑表达式,逻辑表达式的值只有真假两值之分,用1表示真,用0表示假。
3.6.条件运算符
是C语言中唯一的一个三目运算符。格式如下:
表达式1?表达式2:表达式3
在条件表达式中,第一个和第二个表达式用一个?分隔开,
第二个和第三个用:分隔开,
条件表达式执行过程如下:
- 求第一个表达式的值。
- 当第一个表达式的值不为0时,求第二个表达式的值;当第一个表达式的值为0时,求第三个表达式的值。
- 条件表达式的值是上步所求的第二个或第三个表达式的值。
例如:x>y?100:500
解析:如果x>y成立,则条件表达式的值为100;否则条件表达式的值为500.
3.7.类型转换
表达式中的类型自动转换规则
3.8.基本输入、输出函数
3.8.1.字符输出函数putchar()
putchar(ch);
示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a = 's';
int i = 115;
putchar(a);
putchar('\n');
putchar('s');
putchar('\n');
putchar(i);
putchar('\n');
putchar(115);
putchar(10);
return 0;
}
运行效果:
由上可知,putchar是专门输出字符的输出函数。
3.8.2.字符输入函数getchar()
getchar(ch);
示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
运行效果:
当用户输入sun时,
当用户输入s u n时,
这说明,一个getchar只能接收一个字符,而且空格也算一个字符。
3.8.3.格式化输入函数printf()
printf("格式控制",输出值参数表);
3.8.4.格式化输出函数scanf()
scanf("格式控制",参数地址表);
&为取址符。
❤注意:
- 在输入多个整型数据或实型数据时,如果相邻的两个格式转换说明符之间不指定分隔符(如逗号、冒号等),则相应的两个输入数据之间可以用一个或若干个空格、Enter键、或制表符(Tab)作为间隔,但输入多个字符型数据时,数据之间的分隔符作为有效的输入字符。
例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
char c;
scanf("%d",&a);
scanf("%c",&c);
printf("a=%d\n",a);
printf("c=%c\n",c);
return 0;
}
当输入10a时,
当输入10 a时,
由此可以看出注意中所描述的要点。