C语言初阶—操作符

本文详细介绍了C语言中的算术和位操作,包括整型与浮点数除法、取模、移位运算,以及如何利用异或操作无临时变量交换数值,同时强调了溢出风险和正确使用sizeof和字符串比较的方法。
摘要由CSDN通过智能技术生成

        算术操作符:

         / 一定要注意,1 / 2 —>整型除法,结果是0。1.0 / 2 ,1 / 2.0  或者 1.0 / 2.0 —>浮点数除法,结果是0.5。

        % —> 取模操作符,取模操作符的两端必须是整数。

        移位操作符:

        移位操作符移动的是二进制位。

        正整数的原码,反码,补码都相同。

        负数的原码是对应的正数的原码的符号位取负。

        原码的符号位不变,其他位按位取反就是反码。

        反码 + 1 就是补码。

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

        左移操作符:左边丢弃,右边补0。

        右移操作符:

        算术右移:右边丢弃,左边补原符号位。

        逻辑右移:右边丢弃,左边补 0 。

        一般编译器都是采用算术右移的。

        对于移位运算符,不要移动负数位,这是标准未定义的。

      位操作符:

        & --- 按二进制位与

        | --- 按二进制位或

        ^ --- 按二进制位异或

        %d 打印一个有符号的整数。

        不创建临时变量(第三个变量),实现两个数的交换。

#include <stdio.h>

//不创建临时变量(第三个变量),实现两个数的交换。
int main()
{
	int a = 3;
	int b = 5;
	printf("交换前:a = %d,b = %d\n",a,b);
	a = a + b;
	b = a - b;//a+b-b=a
	a = a - b;//a+b-a=b
	printf("交换后:a = %d,b = %d\n",a,b);
	return 0;
}

      这种方法有溢出的风险。

#include <stdio.h>

//不创建临时变量(第三个变量),实现两个数的交换。
int main()
{
	int a = 3;
	int b = 5;
	printf("交换前:a = %d,b = %d\n",a,b);
	a = a ^ b;//a^a = 0,a^0 = a
	b = a ^ b;//a^b^b = a
	a = a ^ b;//a^b^a = b
	printf("交换后:a = %d,b = %d\n",a,b);
	return 0;
}

         异或操作符支持交换律,a^a = 0,a^0 = a,a^b^b = a,a^b^a = b,这种计算方式不会有进位,位数不会发生变化,所以不会有溢出风险。

        赋值操作符:=

       

        单目操作符:

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

        双目操作符:操作符有两个操作数。       

        C语言中 0 表示假,非 0 表示真。 

        sizeof 是一个操作符,计算的是变量所占内存空间的大小,或是计算类型所创建的变量占据内存空间的大小,单位是字节。

        前置 ++ ,前置 -- ,  先 ++ , -- ,再使用。

        后置 ++ ,后置 -- ,先使用,再 ++,-- 。

        不管是什么类型的指针,大小总是4个字节(32位机器)或8个字节(64位机器)。

        sizeof 是操作符,不是函数。

        strlen 是库函数,用来求字符串长度。

if("abc" == "adcd")

        这样写是在比较两个字符串的地址。

        两个字符串比较应该使用 strcmp 库函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值