C语言基础——学习笔记2

目录

四.运算符

4.1算术运算符

4.2赋值运算符

4.3关系运算符

4.4逻辑运算符

4.5条件运算符

4.6逗号运算符

4.7sizeof运算符

4.8C语言运算符优先级


四.运算符

简单概括:C语言的运算符可分为以下几类:

●算术运算符:用于各类数值的运算;

●关系运算符:用于比较运算;

●逻辑运算符:用于逻辑运算;

●位操作运算符:参与运算的量,按二进制位进行运算;

●赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值、复合位运算赋值三类共11种

●条件运算符:也叫三目运算符、三元运算符,用于条件求值(?:);

●逗号运算符:把若干表达式组合成一个表达式;

指针运算符:取内容(*)和取地址(&)两种运算;

●求字节数运算符:计算数据类型或表达式所占的字节数(sizeof);

●特殊运算符:有括号()、下标[ ]、成员(->.)等几种。

4.1算术运算符

运算符名称
+加法运算符
-减法运算符
*乘法运算符
/除法运算符
%求余运算符(模运算符)
+正号运算符(单目运算符)
-负号运算符(单目运算符)
++自增运算符
--自减运算符

举个例子来说明:

#include<stdio.h>
int main()
{
int a=5;/*定义并赋值*/
int b=9;//定义并赋值//
int c=13;//定义并赋值//
printf("a+b=%d\n",a+b);
printf("c-b=%d\n",c-b);
printf("a*c=%d\n",a*c);
printf("c%%a=%d\n",c%a);//在printf中,%是格式控制符的开头,是一个特殊的字符,不能直接输出;两个%%才能输出,此时为一个普通的字符//
return 0;
}

运行结果为;

注意:

●取余运算中,①取余运算符两边的操作数必须为整数,②余数的符号取决于%左边的整数,如果左边为负数,那么余数也是负数,如(-10)%3=-1,反之亦然。

●除法运算中,①两整数相除,结果取整,小数舍掉;②若两数中有一个为小数,则结果也为小数,且是double类型的小数。

●在C语言中,对变量本身进行运算可以有简写形式。假设用#来表示某种运算符,那么

a=a#b

可以简写为

a#=b

#表示+、-、*、/、%中的任何一种运算符

自增和自减

自增运算符++和自减运算符--,是单目运算符,只需要一个操作对象,意思表示每次自身加1或减1。自增自减只针对变量,不针对数字,如10++就是错误的。

运算符在变量前还是在变量后是有区别的:

    在变量前叫做前自增(自减),如++a,先运算后赋值

    在变量后叫做后自增(自减),如a++,先赋值后运算

例子:

#include<stdio.h>
int main()
{
int a,b;
a=b=6;
printf("%d    %d\n",++a,b++);
printf("%d    %d\n",++a,b++);
printf("%d    %d\n",++a,b++);
printf("%d    %d\n",++a,b++);
printf("\n");
printf("%d    %d\n",--a,b--);
printf("%d    %d\n",--a,b--);
printf("%d    %d\n",--a,b--);
printf("%d    %d\n",--a,b--);
return 0;
}

运行结果如下:

4.2赋值运算符

简单赋值运算符记为“=”,由=连接的式子称为赋值表达式,其一般形式为

变量=表达式

在赋值符=之前加上其他二目运算符可构成复合运算符。例如:

+=-=*=/=%=<<=>>=&=^=|=

 一般形式为:

变量 双目运算符=表达式     等效于     变量=变量 运算符(表达式)

例如;a+=5等价于a=a+5,x*=y+7等价于x=x*(y+7)

注意:在进行赋值运算时,会发生类型转换,一般将取值范围小的类型转化为取值范围大的类型是安全的,如int整数赋给long长整型;字符串(字符数组)不饿能使用赋值运算符。

4.3关系运算符

关系运算符用于比较两个量,都是双目运算符,共有6种

符号说明
<小于,如x<y
<=小于或等于
>大于
>=大于或等于
==等于
!=

不等于

注意:①=是赋值,==才是判断两个数是否相等,不能混用;②关系运算符的比较结果是逻辑值,即非真即假,也就是非1即0; 

下面看一个例子:

#include<stdio.h>
int main()
{
int a=5;
int b=10;
if (a <= b)
{
printf("A小于或等于B\n");
}
else
{
printf("A大于B\n");
}
printf("%d\n",6>=6);
printf("%d\n",7==8);
return 0;
}

结果为

4.4逻辑运算符

C语言中提供三种逻辑运算符

符号规则例子
&& 逻辑与运算符(双目)参与运算的两个量均为真时,此表达式才为真5>4&&4.0>3.9结果为1
|| 逻辑或运算符(双目)参与运算的两个量有一真时,表达式即为真5>8||4<2结果为1
!  逻辑非运算符(单目)参与运算的量为真时结果为真,反之为假!(5>4)结果为0

注意:C语言编译在运算得出逻辑运算结果值时,1为真,0为假;但在判断一个量是真还是假时,以0代表假,以非0的数值作为真,例如:5&&0的值为0.

4.5条件运算符

也叫三目运算符,符号为?:,是一个三目运算符,即有3个参与运算的量。由条件运算符组成条件表达式的一般形式为

表达式1?表达式2:表达式3;

语义:先判断表达式1的值是真是假,为真时执行表达式2,并以表达式2的值作为整个表达式的值;为假时执行表达式3,并以表达式3的值作为整个表达式的值。

举例如下:

max=(a>b)?a:b;

等同于

if(a>b) max=a;
else max=b;

int a,b,c;
a=7;
b=6;
c=(a>b)?a:b;

等同于

if (a>b) c=a;
else c=b;

注意:①条件运算符是一对运算符,不能分开单独使用;②条件运算符的结合方向是自右向左,例如,a>b?a:c>d?c:d应理解为“a>b?a:(c>d?c:d)。这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。

4.6逗号运算符

符号为 功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。

求值过程是从左到右分别求n个表达式的值,并以表达式n的值作为整个逗号表达式的值,n大于等于2.

4.7sizeof运算符

sizeof运算符是C语言的关键字,它用来计算变量(或数据类型)在当前系统中占用内存的字节数,也叫长度(求字节)运算符,是一种单目运算符,以字节为单位返回某操作数的大小,用来求某一类型变量的长度。其运算对象可以是任何数据类型变量形式:sizeof(数据类型或变量名)

注意:sizeof不是函数!

例子:

#include<stdio.h>
int main()
{
int n=0;
int intsize = sizeof(int);
printf("int sizeof is %d bytes\n",intsize);
return 0;
}

结果为:

4.8C语言运算符优先级

优先级运算符运算符类型结合方向
1(最高)

()(圆括号)

[ ](下标)

->(指向结构体成员)

.(结构体成员)

自左向右
2

!(逻辑非)、++(自增)、--(自减)、-(负号)、*(指针)、&(地址)、sizeof(长度)

单目自右向左
3

*、/、%(算术运算符)

双目自左向右
4

+、-(算术运算符)

双目自左向右
5

<<(左移)、>>(右移)

双目自左向右
6<、<=、>、>=(关系)双目自左向右
7==(等于)、!=(不等于)双目自左向右
8&&(逻辑与)双目自左向右
9||(逻辑或)双目自左向右
10?:(条件)三目自右向左
11赋值运算符双目自右向左
12,(逗号)双目自左向右

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值