C语言基础

运算符

算术运算符—7个

+(加)、-(减)、*(乘)、/(除)、%(取余/模)、++(自加)、--(自减)

  • 注意:

* / 的优先级 高于 + -,使用()

% 不能对浮点数进行,/ 得到的结果是整数

两个整数整除得到的是整数,有浮点数据,得到浮点数

  1. ++:

++在前:先自加,后赋值

++在后:先赋值,后自加

  1. –:

–在前:先自减,后赋值

–在后:先赋值,后自减

如果 ++、-- 单独成一行,在前和在后没有区别

关系运算符—6个

\>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、==(等于)、!= (不等于)

关系运算符通常用作表达式结果比较,比较的结果是逻辑结果,只有成立和不成立,真和假,false 和 true (零和非零)。

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sK1npYMf-1624361664464)(C:/Users/%E7%A8%8B%E5%B2%9B%E4%B8%BB/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]

逻辑运算符

&&(逻辑与)、||(逻辑或)、!(逻辑非)

​ 逻辑运算符用作连接符号两边的关系式,判断两边关系式的共同结果,结果是逻辑值,只有成立和不成立,真和假,false和 true (零和非零)。

  1. &&(逻辑与):

1 && 1 :1

1 && 0 :0

0 && 1 :0

0 && 0 :0

使用&&连接左右两边表达式,只要有一个表达式的逻辑结果是假的,整个表达式就不成立。只有两边的表达式都为真,整个表达式才成立

  1. ||(逻辑或):

1 || 1 :1

1 || 0 :1

0 || 1 :1

0 || 0 :0

使用||连接左右两边表达式,只要有一个表达式的逻辑结果是真的,整个表达式就成立。只有两边的表达式都为假,整个表达式才不成立

  1. !(逻辑非):

!1 :0

!0 :1

条件表达式不成立取 ! 会变为成立;条件表达式成立取 ! 会变为不成立。

位运算符—6个

&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)

​ 位运算符只要是对二进制位操作的。

操作有符号负数,是操作补码形式!!!

  1. &(按位与):

11010101

& 10011001

​ 10010001

两个数进行按位与操作,是将两个数的二进制依次相与,只有两个二进制位都是1,结果才为1,只要有一个是0,结果就为0。(与0得0)

char a = 13, b = 7;

a & b = 5

​ 0000 1101

& 0000 0111

​ 0000 0101

char a = -13, b = -7;

a & b = -15;

​ 1111 0011 -13补码

& 1111 1001 -7补码

​ 1111 0001 – 某个数的补码

​ 1000 1111 -15

  1. |(按位或):

​ 11010101

| 10011001

​ 11011101

​ 两个数进行按位或操作,是将两个数的二进制依次相或,只要两个二进制位有一个是1,结果就为1(或1得1),只有两个都是0,结果才为0。

​ char a = 13, b = 7;

​ a | b = 15

​ 0000 1101

& 0000 0111

​ 0000 1111

​ char a = -13, b = -7;

​ a | b = -5

​ 1111 0011 -13补码

& 1111 1001 -7补码

​ 1111 1011 —某个数的补码

​ 1000 0101 -5

  1. ^(按位异或):

​ 11010101

^ 10011001

​ 01001100

​ 两个数进行按位异或操作,是将两个数的二进制依次相异或,只要两个二进制位相同,结果就为0,两个二进制不同,结果就为1。(相同为0,不同为1)

​ char a = 110, b = 33;

​ a ^ b = 79

​ 0110 1110

^ 0010 0001

​ 0100 1111

​ char a = -110, b = -33;

​ a ^ b = 77

​ 1001 0010 – -110补码

^ 1101 1111 – -33补码

​ 0100 1101 77

  1. ~(按位取反):

~ 10101101

​ 01010010

  • 对一个数进行按位取反,是对该数的每个二进制位依次取反,1变0,0变1.

​ char a = 45;

​ a = ~a;

~ 0010 1101

​ 1101 0010 — 某个数的补码

​ 1010 1110 -46

<<(左移):

​ 0000 0111 << 3

​ 00111000

​ 左移是将一个数的二进制位整体向左边移动,左边溢出的部分舍弃,右边空缺的部分补0。

>>(右移):

​ 0000 0111 >> 4

​ 0000 0000

左移是将一个数的二进制位整体向右边移动,右边溢出的部分舍弃

  1. 对于无符号数据:左边高位补0

  2. 对于有符号数据:

  • 正数:左边高位补0
  • 负数:左边高位补1 数据移动之前就是负数

赋值复合运算符—10个

​ =(赋值运算符) a = 3 将右边的值或者表达式结果赋值给左边的操作数

​ += a += b <==>a = a+b

​ 将右边的值或者表达式与左边的操作数相加,结果重新赋值给左边的操作数

​ -= a -= b <==>a = a-b

​ 将右边的值或者表达式与左边的操作数相减(左边操作数减右边),结果重新赋值给左边的操作数

​ *= a = b <==>a = ab

​ 将右边的值或者表达式与左边的操作数相乘,结果重新赋值给左边的操作数

​ /= a /= b <==>a = a/b

​ 将右边的值或者表达式与左边的操作数相除(左边操作数除右边),结果重新赋值给左边的操作数

​ %= a %= b <==>a = a%b

​ 将右边的值或者表达式与左边的操作数相取余(左边操作数%右边),结果重新赋值给左边的操作数

​ &= a &= b <==>a = a&b

​ 将右边的值或者表达式与左边的操作数按位与,结果重新赋值给左边的操作数

​ |= a |= b <==>a = a|b

​ 将右边的值或者表达式与左边的操作数按位或,结果重新赋值给左边的操作数

​ ^= a ^= b <==>a = a^b

​ 将右边的值或者表达式与左边的操作数按位异或,结果重新赋值给左边的操作数

​ <<= a <<= n <==>a = a << n

​ 将左边操作数左移n位,将结果重新赋值给左边操作数

​ >>= a >>= n <==>a = a >> n

​ 将左边操作数右移n位,将结果重新赋值给左边操作数

特殊运算符

​ sizeof:求取数据类型或变量所占内存空间的大小,单位是字节

三目运算符:

​ 格式: ? :

表达式 ? 表达式成立执行的内容 : 表达式不成立执行的内容
执行流程:首先判断表达式的逻辑结果,如果是成立的直接执行 表达式成立执行的内容 ,然后把结果作为整个三目运算符的结果,结束运行;如果是不成立,就执行 表达式不成立执行的内容, 然后把结果作为整个三目运算符的结果,结束运行。

三目运算符支持嵌套使用

​ 表达式 ? (表达式 ? 表达式成立执行的内容 : 表达式不成立执行的内容) : (表达式 ? 表达式成立执行的内容 : 表达式不成立执行的内容)

标准格式化输入函数----scanf

​ scanf(“格式化内容”, 地址1, 地址2, …, 地址n );

​ &变量名 获得变量的地址

练习:从终端输入三个数,使用三目运算符比较三个数的大小,找出最大的数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6tQmoVY-1624361664466)(C:/Users/%E7%A8%8B%E5%B2%9B%E4%B8%BB/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)]

& 取地址运算符

获得变量的地址

逗号运算符

​ 格式: ,

表达式1, 表达式2, 表达式3, … , 表达式n;

​ 逗号运算符是在表达式中决定最后的内容。

​ 有逗号运算符的表达式是从左往右依次结合的,会依次执行每一个表达式,并且把最后一个表达式的结果作为整个表达式的结果。

指针运算符

​ *****

格式: *变量名

运算符优先级

​ https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/4752611?fr=aladdin#3https://baike.baidu.com/item/运算符优先级/4752611?fr=aladdin#3

控制语句

​ 顺序、选择、循环

选择

​ if、switch

​ if语句

  1. 表选择
if (条件表达式)
{
	成立执行的内容;
}   
  • 遇到if语句,判断条件表达式,成立执行内容,不成立执行if语句下边的内容

  1. 二分枝选择
if (条件表达式)
{
	成立执行的内容;
}
else {
不成立执行的内容;
}
  • 遇到if语句,判断条件表达式,成立执行if语句的内容,不成立执行else语句的内容
  1. 多分枝选择
if (条件表达式1)
{
	表达式1成立执行的内容;
}
else if (条件表达式2)
{
	表达式2成立执行的内容;
}
else if (条件表达式3)
{
	表达式3成立执行的内容;
}else if (条件表达式n)
{
	表达式n成立执行的内容;
}

else {
	上边所有条件都不成立执行的内容;
}

首先判断条件表达式1是否成立,如果成立执行对应的内容,执行完结束整个if语句执行;如果条件不成立,会跳到下一个表达式判断,重复步骤,直到条件成立或者是遇到了else语句或者是if语句结束

switch case多分枝选择
switch (整型/字符型表达式)
{
	case 常量1:
           匹配成功执行的内容
           break;
    case 常量2:
           匹配成功执行的内容
           break;
    case 常量3:
           匹配成功执行的内容
           break;case 常量n:
           匹配成功执行的内容
           break;
    default:
       上边匹配都不成功执行的内容
} 
  • 整型/字符型表达式:需要数值型数据,必须是整型数据

  • 执行流程:switch的整型/字符型表达式依次取匹配case的常量(常量表达式),匹配成功就执行语句内容,然后通过break结束整个switch语句的执行,如果匹配不成功,会跳到下一个case继续匹配,一直到default语句或者是switch语句的结束

  • break:用作结束(跳出)switch语句的执行。匹配到一个case时,语句块内省略掉break时,会不匹配下边所有的case语句,直接执行里边的内容,直到遇到下一个break或是switch语句的结束。

switch语句嵌套使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2o3U2tU-1624361664467)(C:/Users/%E7%A8%8B%E5%B2%9B%E4%B8%BB/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)]

break;


case 常量n:
匹配成功执行的内容
break;
default:
上边匹配都不成功执行的内容
}


- 整型/字符型表达式:需要数值型数据,必须是整型数据

- 执行流程:switch的整型/字符型表达式依次取匹配case的常量(常量表达式),匹配成功就执行语句内容,然后通过break结束整个switch语句的执行,如果匹配不成功,会跳到下一个case继续匹配,一直到**default**语句或者是switch语句的结束

- break:用作结束(跳出)switch语句的执行。匹配到一个case时,语句块内省略掉break时,会不匹配下边所有的case语句,直接执行里边的内容,直到遇到下一个break或是switch语句的结束。

switch语句嵌套使用

[外链图片转存中...(img-L2o3U2tU-1624361664467)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值