对C语言中操作符的认知与理解

操作符:
一,算数操作符
+ - * / %
1.浮点数不能用于取模运算
2. 取模操作的两个操作数必须是整数,即返回整除之后的余数
3./(除法)运算只要有浮点数参与,就是浮点数除法
4.除法运算除数不能为0,也不能用0去进行取模操作
5.%2就等于/2,也可以当做取一个数的最低位比特数
二,移位操作符
>> 右移操作符
<< 左移操作符
1.i>>n,即i右移n位,相当于i除以二的n次方
2.i<<n,即i移左n位,相当于i乘以二的n次方
3.计算机的运算操作在计算机的cpu中,变量是在内存开辟空间进行存储数 据,并且以这个数的补码存储
4.左移操作时,左边抛弃右边补0即可
5.右移操作时,分为逻辑右移和算数右移。
6.逻辑右移即无符号数操作,右边抛弃,左边补0;
7.算数右移,右边抛弃,左边补算数位,即正补0负补1。
8.不要一开始就左移右移负数
三,位操作符
&(按位与) | (按位或) ^(按位异或)
1.按位,即按比特位一一对应
2,使用位操作符时必须是两个同等类型的整数
3,任何数异或0结果为其自身
4,任何数或1结果为其自身
5,任何数与1结果为其自身
6,任何数与0结果为0
四,赋值操作符
=
可以用于变量初始化,或者给变量重新赋值操作,比较容易操作。
五,复合赋值符
+= … -=… *=… /=… %= …>>=…>>=…&=…|=…^=…
这些运算符可以写成复合的效果
六,单目操作符
!(逻辑反操作) -(负值) +(正直)·&(取地址)
sizeof(操作符的类型长度,以字节为单位)
~(对一个数的二进制进行按位取反)
++(前置++ 后置++)
*(间接访问操作符,解引用操作符)
(类型)强制类型转换

  1. 除0以外,其余数取逻辑反即为0
  2. ~按位取反 即对应二进制数比特位逐个取反
  3. 变量的三个构成部分:空间+内容+地址
  4. sizeof()不是函数,是操作符。
  5. 强制类型转换只是改变我们对这个数的看待方式
  6. 指针是一个地址,*p=&a,p里面存的是a的地址,*p就是a
  7. 变量的空间称为变量的左值,变量的内容称为变量的右值。
  8. 没有初始化的指针称为野指针(悬垂指针)
  9. ‘NULL’ ,’ \0’,‘0’,都是0;
    七.逻辑操作符
    &&(逻辑与)
    ||(逻辑或)
    1.连接两个表达式
    2.&&,左右两个均为真才为真
    3.||,有一个表达式为真即为真
    4 多个表达式逻辑与,从左往右只要有一个为假,即后面不再执行
#include<stdio.h>
#include<windows.h>
int main(){
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++&&++b&&d++&&c++;  /*l逻辑与操作符,a为0即为假,
					后面表达式不再执行,a先判断后自增一*/
	printf("i=%d\n,a=%d\n,b=%d\n,c=%d\n,d=%d\n", i, a, b, c, d);
	system("pause");
}

test
5,多个表达式逻辑或,从左往右只要有一个为真,即后面不再执行

#include<stdio.h>
#include<windows.h>
int main(){
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++||++b||d++||c++;  /*l逻辑或操作符,a为0即为假,a先判断后自    增一,
	                 接着++b为真,b是先自增后判断,后面表达式不再执行*/
	printf("i=%d\n a=%d\n b=%d\n c=%d\n d=%d\n", i, a, b, c, d);
	system("pause");
}

test
八,条件操作符
exp1 ? exp2:exp3
1,exp1表达式成立则exp2,不成立则exp3;

#include<stdio.h>
#include<windows.h>
int test(int a1, int b1)
{
	return(a1 > b1 ? a1 : b1);  /*(条件操作符)三目表达式求两个数中较大值*/
}
int main(){
	int a = 1, b = 2;
	int n = test(a, b);
	printf("%d", n);
	system("pause");
}

在这里插入图片描述
九,逗号表达式
(exp1,exp2,>>>>>>,expn)
1.括号内表达式均会执行,但是以最后一个条件值为准。

#include<stdio.h>
#include<windows.h>
int main(){
	int a = 1, b = 2;
	int i = (a + b, a*a, b*b, 1000); /*逗号表达式*/
	printf("%d", i);
	system("pause");
}

test

十,下标引用,函数调用
1.下标引用操作符
操作数:一个数组名+一个索引值

#include<stdio.h>
#include<windows.h>
int main(){
	int arry[3] = { 1, 2, 3 };
	arry[1] = 12;              /*[]下标引用操作*/
	printf("%d", arry[1]);  
	system("pause");
}

2.( )函数调用操作符
接收一个或者多个操作数:第一个操作数是函数名,剩余操作数就是传递给函数的参数。

#include<stdio.h>
#include<windows.h>
int test(int value1, int value2)
{
	printf("%d+%d=%d", value1, value2, value1 + value2);
}

int main(){
	int a = 1, b = 2;
	test(a, b);     /*()函数调用操作符 :函数名test,
	                  还有传递给函数的两个参数啊a,b*/
	system("pause");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值