C语言初级阶段2——运算符、表达式和语句

运算符

分类
算术运算符、自增自减运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符、逗号运算符

算数运算符

1.定义:用于算术运算的特殊符号

2.基本使用(除了正负号是单目运算符以外其余都是双目运算符)

运算符 含义 举例 结果 优先级 结合性
+ 正号运算符 +a a的值 2 自右向左
- 负号运算符 -a a的算数负值 2 自右向左
* 乘法运算符 a*b a和b的乘积 3 自左向右
/ 除法运算符 a/b a除以b的商 3 自左向右
% 求余运算符 a%b a除以b的余数 3 自左向右
+ 加法运算符 a+b a和b的和 4 自左向右
- 减法运算符 a-b a和b的差 4 自左向右

自增自减运算符

1.定义

自增运算符是两个+连起来的符号,作用是使变量的值加一

自减运算符是两个-连起来的符号,作用是使变量的值减一

2.自增、自减运算符的使用

运算符 含义 结果 优先级 结合性
++i 在使用i之前,先使i的值加1 先执行i=i+1,再使用i的值 2 自右向左
--i 在使用i之前,先使i的值减1 先执行i=i-1,再使用i的值 2 自右向左
i++ 在使用i之后,先使I的值加1 先使用i的值,再执行i=i+1 2 自右向左
i-- 在使用i之后,先使I的值减1 先使用i的值,再执行i=i-1 2 自右向左

运算符如果混在一块就按照优先级进行运算

关系运算符

1.定义:关系运算符是比较两边表达式的大小关系,其运算过后的结果为逻辑值,要么关系表达式为真(逻辑真),运算结果为非零值,要么表达式为假(逻辑假),其结果为0。

2.关系运算符的基本使用

关系运算符 含义 优先级 结合性
< 小于 6 自左向右
<= 小于或等于 6 自左向右
> 大于 6 自左向右
>= 大于或等于 6 自左向右
== 等于 7 自左向右
!= 不等于 7 自左向右

()强制转换运算符优先级14

#include<stdio.h>
int main()
{
int b = (double)10;//10.000000
int c='a';
printf("%d\n",c);
double d = (int)'a';//97.000000
printf("%lf\n",d);
return 0;
}

逻辑运算符

1.定义:有与(&&)、或(||)、非(!)三种。

逻辑运算符用于判断运算符两边的表达式的逻辑关系,一般用于连接多个条件表达式。

2.逻辑运算符的使用

运算符 含义 举例 说明(不是真,就是假) 优先级 结合性
&& 逻辑与(双目) a&&b 如果a和b都是真,其结果为真 11 自左向右
|| 逻辑或(双目) a||b 如果a和b有一个及以上为真,其结果为真 12 自左向右
! 逻辑非(单目) !a 如果a是真,则!a为假 2 自右向左

条件运算符(三目运算符)

1.定义:有两个运算符'?'':'组成,必须一起使用。

要求有三个操作对象,称为三目运算符。

它的优先级为13,结合性自右向左。

首先计算表达式1的值,如果表达式1的值为非0值,则该条件表达式的值为表达式2的值;如果表达式1的值为0,则该条件表达式的值为表达式3的值。

2.基本格式:表达式1?表达式2:表达式3

image-20221019184031320

#include<stdio.h>
int main()
{
int a = 10;
int b = 2;
int c = a > b ? a = 11 : b = 11;
printf("a=%d\nc=%d\n",a,c);
return 0;
}

位运算符

1.位运算符是针对数据的二进制进行运算的,其中包含左移“<<”、右移“>>”、按位非“~”、按位或"|"、按位与"&"、按位异或"^"这六种位运算,其只能对整型数据操作。

2.位运算符的基本使用

(1)左/右移运算符("<<"、">>"),基本格式:整数<<n、整数>>n,其用于将一个整数的二进制向左/向右移动n个二进制位。

(2)按位非运算符"",基本格式:整数,用于将一个整数的二进制各位取反,1变0,0变1.

(3)按位或'|'和按位'&',基本格式:整数|整数、整数&整数,用于将两个整数的各位二进制相或/相与。

(4)按位异或'',基本格式:整数整数,用于将两个整数的二进制相异或,遵循相同为0,相异为1的规则。

//位运算符:二进制运算符
#include<stdio.h>
int main()
{
//左移:左移相当于乘以2的几次方,移几位就乘以2的几次方。
int a = 10;
printf("a=%d\n",a<<3);
//右移:右移相当于除以2的几次方,移几位就除以2的几次方。
int b = 4;
printf("b=%d\n",b>>1);
//按位非(取反):二进制1变0,0变1,二进制最高位表示符号位,最高位0表示正数1表示负数。
int c = 10;
printf("c=%d\n",~c);
/*正数的原码反码补码完全一样
原码:带有符号位的真值表示。ex:-1的原码是10000001
反码:除符号位以外,其余按位取反所得到的结果。
补码:在反码的基础上加1。
*/
//按位或:对应位置,有1则为1,否则为0。
int d = 5,e = 3;
printf("%d\n",d|e);
//按位与:对应位置,都为1,结果才为1,否则为0。
int f = 5,g = 3;
printf("%d\n",f&g);
//按位异或:对应位置,相同为0,不同为1。
int h = 5,i = 3;
printf("%d\n",h^i);
return 0;
}

赋值运算符

1.定义:赋值符号'='就是赋值运算符,用于给变量赋值,和算术运算符组合可以构成复合赋值运算符。

2.赋值运算符的基本使用

赋值运算符 优先级 结合性
= 14 自右向左
+= 14 自右向左
-= 14 自右向左
*= 14 自右向左
/= 14 自右向左
%= 14 自右向左

a += b ==> b=b+a;

a -= b ==> b=b-a

a = b ==> b=ba

a /= b ==> b=b/a

a %= b ==> b=b%a

逗号运算符

定义:逗号运算符就是一个逗号',',也叫顺序求值运算符,起到分隔的作用。它的优先级15级,结合方向是自左向右。

#include<stdio.h>
int main()
{
int a = (1,2,3,4,5,6,7,8,9);
printf("a=%d\n",a);//输出的值为9,输出结果为最后一个值
return 0;
}

求字节运算符

sizeof():求类型大小,自右向左,优先级14

#include<stdio.h>
int main()
{
printf("%d\n",sizeof(10));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(char));
return 0;
}

表达式

1.表达式的含义及组成:用运算符和括号将运算对象(也叫操作数)连接起来的、符合C语言语法规则、用于相关运算的式子,称为C语言表达式。运算对象包括常量、变量、函数等。

操作数:一个运算符要用到几个变量运算,比如需要两个数需要进行计算,那么就叫做双目运算符。

2.示例:例如一个合法的算数表达式:a*b/c-1.5+'a'

3.执行规则:在计算表达式的值时,应先按运算符的优先级别顺序执行,例如先乘除后加减。存在同一级别的运算符做运算时,则需要看运算符的结合性。(同一级别的运算符结合性是一致的,可以用小括号改变运算的优先级)

语句

1.含义及其构成:C语言语句一般是由表达式和语句结束符';'组成,是构成C语言函数的基本单位。

2.类型

(1)流程控制语句

​ ①if()...else...

​ ②for()...

​ ③while()...

​ ④do...while()

​ ⑤continue

​ ⑥break

​ ⑦switch

​ ⑧return

​ ⑨goto

(2)函数调用语句:用于调用函数

​ 如:printf();

(3)表达式语句:用于进行相关的运算。

​ 如:由算数表达式组成的运算语句a*b/c-1.5+'a';

(4)空语句:只有一个语句结束符';'分号的语句,什么都不做。

​ 如:;

(5)复合语句:用大括号括起来的语句块,是多条语句的组合,方便流程语句控制多条语句。

​ 如:{

​ i=3;

​ j=4;

​ }

posted on 2022-10-17 20:20  George-Juddson  阅读(327)  评论(0编辑  收藏  举报