C语言学习第六天————初识操作符

操作符

(简单认识,后面具体学)

算术操作符

+  -  *  /  %

移位操作符

>>(右移操作符)  <<(左移操作符)

位操作符

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

赋值操作符

= 等   += 加等   -= 减等  *= 乘等   /= 除等   &= 按位与等   |= 按位或等   ^= 按位异或等   <<左移等

>> 右移等

单目操作符

逻辑反操作
+正值
-负值
&取地址
sizeof操作数的类型长度(以字节为单位)

~

对一个数的二进制按位取反
++

前置、后置++

--前置、后置--
*间接访问操作符(解引用操作符)
(类型)强制类型转换

如:a+b      有两个操作数(a和b),这样的叫做双目操作符

单目操作符:只有一个操作数

int main()
{
	int a = 3;
	printf("%d\n", !a);//C语言中,0表示假,非0表示真。
	return 0;
}

单目操作符!代表逻辑反操作,a=3,非0,所以!a把真变成假,即0

int main()
{
	int a = 0; 
	printf("%d\n", !a);//C语言中,0表示假,非0表示真。
	return 0;
}

反之,当a=0时,!a把假变为真,即1(正常来说,非0都可以说为真,!a时,默认1)

sizeof计算变量大小⬇⬇⬇

int main()
{	//sizeof是一个操作符,不是函数
	//计算类型或者变量大小的
	int a = 11;
	printf("%d\n", sizeof(a));
	return 0;
}

sizeof计算数组大小⬇⬇⬇

int main()
{
	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));
	return 0;
}

(10个元素,每个元素是4个字节,所以输出的是40)

进阶:用总数组大小除以数组中一个元素的大小,就等于数组中的元素

int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n",sz);
	return 0;
}

~:按位取反,把所有二进制位数字,1变成0,0变成1

int main()
{
	int a = 0;
	printf("%d", ~a);
	return 0;
}

输出结果为-1

一个整数的二进制表示有三种:原码,反码,补码

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

在负整数中,原码反码补码不同

例如:-1

源码:10000000000000000000000000000001(最高位为符号位,最低位为有效位)

反码:11111111111111111111111111111110(符号位不变,其他位按位取反)

补码:11111111111111111111111111111111(反码的二进制序列加一)

在正整数中,源码反码补码相同

例如:1

源码=反码=补码=00000000000000000000000000000001

所以在上述代码中,a=0,0的二进制序列为00000000000000000000000000000000经过~按位取反后变为11111111111111111111111111111111,因为整数在内存中储存的是补码,所以输出结果为-1

++,--

int main()
{
	int a = 10;
	int b = ++a;//前置++,先++后使用
	printf("%d\n", b);
	printf("%d\n", a);
	return 0;
}

前置++,先++,后使用

即先a+1,后让b=a

结果为11,11

int main()
{
	int a = 10;
	int b = a++;//后置++。先使用后++
	printf("%d\n", b);
	printf("%d\n", a);
	return 0;
}

后置++,先使用,后++

即先让b=a,后a+1

结果为10,11

关系操作符

>   <   >=   <=   !=(用于测试“不相等”)   ==(用于测试“相等”)

逻辑操作符

&& 逻辑与(并且)   || 逻辑或(或者)

条件操作符

条件操作符(三目操作符)

exp1?exp2:exp3

表达式1(exp1)如果成立,表达式2(exp2)计算,整个表达式的结果是exp2的结果

表达式1(exp1)如果不成立,表达式2(exp2)不计算,表达式3(exp3)计算,整个表达式的结果是exp3的结果

例如:这段代码用普通方法表示为

int main()
{
	int a = 0;
	int b = 3;
	int max = 0;
	if (a > b)
		max = a;
	else
		max = b;
	printf("%d\n", max);
	return 0;
}

而用条件操作符(三目操作符)表示为

int main()
{
	int a = 0;
	int b = 3;
	int max = 0;
	max = a > b ? a : b;
	printf("%d\n", max);
	return 0;
}

逗号表达式

exp1,exp2,exp3,...expn

逗号隔开的一串表达式

int main()
{
	int a = 0;
	int b = 3;
	int c = 5;
	int d = (a = b + 2, c = a - 4, b = c + 2);
	printf("%d\n",d);
	return 0;
}

逗号表达式是从左到右依次计算的

整个表达式的结果是最后一个表达式的结果

所以输出结果为3

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

[] 下表引用   () 函数调用   .   ->

2024/7/30 20.00

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值