C语言中的操作符(初识)

本文介绍了C语言中的各种操作符,包括算术操作符如+、-、*、/、%,移位操作符>>>,位操作符如&、^、|,赋值操作符如=、+=等,以及单目操作符、关系操作符、逻辑操作符、条件操作符和逗号表达式。通过示例代码解释了这些操作符的用法和效果,如整数除法和浮点数除法的区别,位移操作符如何影响二进制位,以及位操作符如何进行按位与、或、异或等操作。
摘要由CSDN通过智能技术生成

目录

操作符

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员


操作符

算术操作符

+     -      *      /      %
#include<stdio.h>
int main()
{
	int a = 9 / 2;
	float b = 9 / 2;
	float c = 9 / 2.0;
	int d = 9 / 2.0;
	printf("%d\n", a);
	printf("%f\n", b);
	printf("%f\n", c);
	printf("%d\n", d);
%取余(取模) 9%4=1

}

运行结果 

移位操作符

>>    <<

左移动操作符 -- 移动的是二进制位

例如 int a = 2 ,因为int为整型,int整型为4个字节=4*8 =32 位

00000000 00000000 00000000 00000010

int b=a<<1 向左移动一位

00000000 00000000 00000000 00000100

    int a = 2;
	int b = a << 1;//左移动
	int c = a >> 1;//右移动
	printf("%d\n", b);
	printf("%d\n", c);

运行结果:

  

位操作符

&      按位与
^       按位或
|        按位异或

赋值操作符

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

复合赋值符: +=     -=     *=     /=    &=    ^=      |=       >>=      <<=

a=a+5       a+=5

单目操作符

!               逻辑反操作     //c语言中0表示假,非0就是真
-               负值
+              正值
&              取地址
sizeof       操作数的类型长度(以字节为单位)
~              对一个数的二进制按位取反
--              前置、后置 --
++            前置、后置 ++
*               间接访问操作符 ( 解引用操作符 )
( 类型 )       强制类型转换
//c语言中0表示假,非0就是真
int a =10;
printf("%d\n",!a);//结果为 0
int a =0;
printf("%d\n",!a);//规定结果为 1

if(a)
{
//如果a为真,做事
}
if(!a)
{
//如果a为假,做事
}

sizeof是一个操作符,是一个计算类型或者变量的大小的,不是函数,通常()不省略

    int a = 10;
	printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(a));//或者sizeof a
	printf("\n");
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));//计算的是数组的大小,单位字节 int占4个字节 40=10*4
	printf("%d\n", sizeof(arr[0]));//下标0的元素大小 4
	int s = sizeof(arr) / sizeof(arr[0]);//
	printf("%d\n", s);

运行结果:

~按照二进制位取反,结果为b=-1,把所有二进制位中的数字,1变成0,0变成1

因为整数在内存中存储的是补码

一个整数的最高位表示符号位 1负 0正

一个整数的二进制表示有3种:

原码

反码

补码

int类型4个字节32位

负整数的计算

-1:

10000000 00000000 00000000 00000001(原码)

11111111 11111111 11111111 11111110 (反码)符号位不变,其他位取反 1变成0,0变成1

11111111 11111111 11111111 11111111  (补码)反码加1=补码 内存中存储的为补码

0:

00000000 00000000 00000000 00000000(原码)

按二进制位取反后:

11111111 11111111 11111111 11111111(为-1的补码,逆着推出原码 所以结果为-1)

正整数:原码、反码、补码相同

int a=0;
b= ~a;//~按照二进制位取反,结果为b=-1,把所有二进制位中的数字,1变成0,0变成1

--/--的使用

int main()
{
int a = 10;
int b = ++a; //前置++    先++,后使用

printf("%d\n",b);//结果为11
printf("%d\n",a);//结果为11


int a = 10;
int b = a++; //后置++    先使用,后++

printf("%d\n",b);//结果为10
printf("%d\n",a);//结果为11
}

强制类型转换 (类型)

	int a1 = 3.14; //会有数据丢失警告       结果为3
	int a2 = (int)3.14;//强制转换为int类型  结果为3
	printf("%d\n", a1);   //结果为3
	printf("%d\n", a2);   //结果为3

关系操作符

>
>=
<
<=
!=          用于测试 不相等
==         用于测试 相等

逻辑操作符

&&          逻辑与  (并且)
||             逻辑或  (或者)
int a = 3;
int b = 5;
int c = a && b;结果为1 为真  非0即为真,编译器结果真为1
if(a && b)
{

}
int a = 3;
int b = 0;
int c = a && b;结果为0 为假,有一假为假
int d =  a||b;结果为1  为真,有一真为真
	printf("%d\n", c); 0
	printf("%d\n", d); 1
if(a && b)
{

}

条件操作符

条件操作符也被称为三目操作符

exp1 ? exp2 : exp3

如果exp1为真(成立),exp2计算 ,整个表达式的结果:exp2的结果

如果exp1为假( 不成立),exp3计算 ,整个表达式的结果:exp3的结果

int a = 0;
	int b = 3;
	int max = 0;
	/*if (a > b)
		max = a;
	else
		max = b;
		*/
	
	max = a > b ? a : b;
	printf("%d\n", max);//结果为 3

逗号表达式

逗号隔开的一串表达式
逗号表达式是从左向右依次计算的,整个表达式的结果是最后一个表达式的结果
exp1 , exp2 , exp3 , …expN
    int a = 0;
	int b = 3;
	int c = 5;
	int d = (a = b + 2, c = a - 4, b = c + 2); //a=5,c=1,b=3
	//逗号表达式是从左向右依次计算的,整个表达式的结果是最后一个表达式的结果
	printf("%d\n", d);//结果为3
	

下标引用、函数调用和结构成员

[ ]        ( )       .        ->
[ ]下标引用操作符
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n", arr[5]);//结果 6
( )函数调用引用符
调用函数的时候,函数名后边的( )就是函数调用操作符
例如 :printf ( )  
            scanf ( )

其余未介绍到的操作符后期遇到时再详细讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小凡同学zero

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值