C 语言部分操作符详解 -- 进制转换,原码、反码、补码,位操作符,逗号表达式,操作符的优先级和结合性,整型提升,算术转换

【C语言】操作符--百科全书 C语言操作符 阅读详情

目录

1. 操作符分类

2. 二进制和进制转换

2.1 2 进制和 10 进制的相互转换

2.2 2 进制和 8 进制、16 进制的转换

3. 原码、反码、补码

4. 位操作符

5. 逗号表达式

6. 下表访问[]、函数调用()

8. 操作符的属性:优先级、结合性

9. 表达式求值

9.1 整型提升

9.2 算术转换


1. 操作符分类

        C 语言中很很多操作符,根据功能可以将操作符分为很多类,比如算数操作符、位操作符、赋值操作符、关系操作符、逻辑操作符等等。关系操作符、逻辑操作符以及条件操作符在https://blog.youkuaiyun.com/CSQCSQCC/article/details/137715007 中已经有所介绍,算数操作符以及部分单目操作符在https://blog.youkuaiyun.com/CSQCSQCC/article/details/148639715中已经有所介绍。

2. 二进制和进制转换

        2 进制、8 进制、10 进制、16 进制是数值的不同表示形式。

15的2进制:1111
15的8进制:17
15的10进制:15
15的16进制:F

        10 进制就是满 10 进 1,每一位都是 0-9 的数组组成。相对的二进制就是满 2 进 1,每一位都是 0-1 的数字组成。 

2.1 2 进制和 10 进制的相互转换

        10 进制的每一位是权重,10 进制的数字从右往左是个位、十位、百位...,分别每一位的权重是 10 的 0 次方,10 的 1 次方,10 的 2 次方...

        2 进制和 10 进制类似,只不过 2 进制的每一位权重不一样,从右往左分别是 2 的 0 次方,2 的 1 次方,2 的 2 次方... 

        现在将 10 进制的 125 转为 2进制,则将 125 依次除以 2,每次除以 2 的余数就是 2 进制中从低数值位到高数值位的值。

        如上图,最后得到的二进制就是从下到上的余数。 

        2 进制转成 10 进制,就是将 2 进制每一位的值乘以每一位的权重然后相加即可。

2.2 2 进制和 8 进制、16 进制的转换

        8 进制的数字每一位是 0-7 的数字组成,写成 2 进制就是 3 位 2 进制数字,比如 8 进制的 7 就是 2 进制的 111,所以在 2 进制转 8 进制的时候,从低位开始,每 3 位转换成一个 8 进制数字即可,最后一组不够 3 位则将高位看做 0 即可。

        如上图,01 转成 8 进制的 1,101 转为 8 进制的 5,011 转为 8 进制的 3,所以 2 进制的 01101011 就会转成 8 进制的 153。 

        16 进制的数字每一位是 0-9 以及 a-f 的数字组成,和 8 进制相似,16 进制写成 2 进制就是 4 位 2 进制数字,所以在 2 进制转 16 进制的时候,从低位开始,每 4 位转换成一个 16 进制数字即可,最后一组不够 4 位则将高位看做 0 即可。

        如上图,0110 转成 16 进制的 6,1011 转为 16 进制的 b,所以 2 进制的 01101011 就会转成 16 进制的 6b。 

3. 原码、反码、补码

        整数的 2 进制表示方法有三种,原码、反码、补码。

        有符号整数的三种表示方法均有符号位和数值位,2 进制序列中,最高位的 1 位是被当做符号位,0 表示“正”,1 表示“负”,剩余的都是数值位。

        (1)正整数的原码、反码、补码都相同。

        (2)负整数的原码、反码、补码各不相同。

                原码:将数值按照正负数的形式翻译成 2 进制得到的就是原码。

                反码:原码的符号位不变,其他位依次按位取反得到的就是反码。

                补码:反码 + 1 就得到的是补码。反码取反然后 + 1 得到的就是原码。

        在计算机系统中,数值一律用补码来表示和存储。因为使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理,此外,补码和原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

4. 位操作符

操作符名称描述
&按位与对两个操作数逐位进行与运算
|按位或对两个操作数逐位进行或运算
^按位异或对两个操作数逐位进行异或运算
~按位取反对两个操作数逐位进行取反运算
<<左移将操作数的 bit 位左移指定位数
>>右移将操作数的 bit 位右移指定位数

        注:位操作符的操作数只能是整数。

#include <stdio.h>
int main()
{
	int num1 = -3;
	// -3 存在 int a 中,是 4 个字节,32 个 bit 位
	// 源码:1000 0000 0000 0000 0000 0000 0000 0011
	// 反码:1111 1111 1111 1111 1111 1111 1111 1100
	// 补码:1111 1111 1111 1111 1111 1111 1111 1101
	int num2 = 5;
	// 5 存在 int a 中,是 4 个字节,32 个 bit 位,整数原码,反码,补码都一样
	// 源码:0000 0000 0000 0000 0000 0000 0000 0101
	// 反码:0000 0000 0000 0000 0000 0000 0000 0101
	// 补码:0000 0000 0000 0000 0000 0000 0000 0101

	// -3 补码:1111 1111 1111 1111 1111 1111 1111 1101
	// 5  补码:0000 0000 0000 0000 0000 0000 0000 0101
	printf("%d\n", num1 & num2);
	//	  补码:0000 0000 0000 0000 0000 0000 0000 0101
	//	  反码:0000 0000 0000 0000 0000 0000 0000 0101
	//	  源码:0000 0000 0000 0000 0000 0000 0000 0101 -- 5

	printf("%d\n", num1 | num2);
	//	  补码:1111 1111 1111 1111 1111 1111 1111 1101
	//	  反码:1000 0000 0000 0000 0000 0000 0000 0010
	//	  原码:1000 0000 0000 0000 0000 0000 0000 0011 -- -3

	printf("%d\n", num1 ^ num2);
	//	  补码:1111 1111 1111 1111 1111 1111 1111 1000
	//	  反码:1000 0000 0000 0000 0000 0000 0000 0111
	//	  原码:1000 0000 0000 0000 0000 0000 0000 1000 -- -8

	printf("%d\n", ~0);
	// 0 补码:	  0000 0000 0000 0000 0000 0000 0000 0000
	// 补码取反:  1111 1111 1111 1111 1111 1111 1111 1111 -- 补码
	//            1000 0000 0000 0000 0000 0000 0000 0000 -- 反码
	//            1000 0000 0000 0000 0000 0000 0000 0001 -- 原码 -- -1
	return 0;
}

        例:不创建临时变量,实现两个整数的交换。 

// 方法1:
#include <stdio.h>
int main()
{
	int a = 3;
	int b = 5;

	printf("交换前: a = %d, b = %d", a, b);
	a = a + b;	// a 为 a 和 b 的和
	b = a - b;	// b = a 和 b 的和减去 a,则 b = a
	a = a - b;	// 上一步中,b 已经等于 a 了,再用 a 和 b 的和减去 a 得到 b
	printf("交换后: a = %d, b = %d", a, b);

	return 0;
}

// 该方法在 a + b 超过整型的最大值时,就会出现溢出的情况,计算出来的值不对
// 方法2:异或
#include <stdio.h>
int main()
{
	int a = 3;
	int b = 5;

	printf("交换前: a = %d, b = %d", a, b);
	a = a ^ b;
	b = a ^ b;	// b = a ^ b ^ b = a;
	a = a ^ b;	// a = a ^ b ^ a = b;
	printf("交换后: a = %d, b = %d", a, b);
	
	return 0;
}

// a ^ a = 0; a ^ 0 = a;

        左移操作符 " << ":左边抛弃,右边补0。 

#include <stdio.h>
int main()
{
	int num = 10;
	int n = num << 1;
	printf("n= %d\n", n);
	printf("num= %d\n", num);
	return 0;
}

        右移操作符 " >> ":(1)逻辑右移:左边用 0 填充,右边丢弃。(2)算数右移:左边用原该值的符号位填充,右边丢弃。 

        右移到底是算数右移还是逻辑右移是取决于编译器的实现,常见的编译器都是算数右移。

        算数右移:

        逻辑右移:

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

5. 逗号表达式

        逗号表达式就是用逗号隔开多个表达式。逗号表达式从左往右依次执行,整个表达式的结果是最后一个表达式的结果。

#include <stdio.h>

int main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);	//逗号表达式
	printf("c=%d", c);
	
	return 0;
}

        在上述逗号表达式中,从左向右计算,a 的值被更新为 12,b 的值被更新为 13,则 c 等于最后一个表达式的结果,所以 c = b = 13。 

        逗号表达式在 while 循环中使用可以减少代码冗余。 

a = get_val();
count_val(a);
while (a > 0)
{
    //业务处理
    //...
    a = get_val();
    count_val(a);
}


// 如果使⽤逗号表达式,改写为如下代码,可以减少代码冗余
while (a = get_val(), count_val(a), a>0)
{
    //业务处理
}

6. 下表访问[]、函数调用()

        (1)下标引用操作符 []:该操作符的操作数为一个数组名和一个索引值。

int arr[10];    // 创建数组。
arr[9] = 10;    // 使用下标引⽤操作符。

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

#include <stdio.h>
void test1()
{
	printf("hehe\n");
}
void test2(const char* str)
{
	printf("%s\n", str);
}
int main()
{
	test1();	// ()作为函数调⽤操作符。
	test2("hello XiaoC.");	// ()就是函数调⽤操作符。
	return 0;
}

8. 操作符的属性:优先级、结合性

        C 语言的操作符有两个重要的属性:优先级和结合性,这两个属性决定了表达式求值的计算顺序。

        (1)优先级:如果一个表达式包含多个运算符,运算符的优先级决定哪个运算符应该优先执行。

3 + 4 * 5;

        上述表达式中既有加法运算也有乘法运算,由于乘法运算优先级高于加法,所以先计算乘法。 

        (2)结合性:如果两个运算符优先级相同,优先级没办法决定哪个先计算,根据运算符左结合还是右结合,决定执行顺序。⼤部分运算符是左结合(从左到右执⾏),少数运算符是右结合(从右到左执⾏),⽐如赋值运算符( = )。

5 * 6 / 2;

        上述乘法和除法的优先级相同,都是左结合运算符,所以从左到右执行。 

9. 表达式求值

9.1 整型提升

        C 语言中整型算数运算总是至少以缺省整型类型的精度来进行的,为了获取这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

        整型提升规则:(1)有符号整数提升是按照变量的数据类型的符号位来提升的。(2)无符号整型提升,高位补0。

#include <stdio.h>

int main()
{
	char a = 3;
	char b = 127;
	char c = a + b;
	printf("c = %d", c);
	return 0;
}

        这里解释为什么上述结果为 126。

#include <stdio.h>

int main()
{
	char a = 3;
	// 00000011 -- a在内存中存储的补码
	char b = 127;
	// 01111111 -- b在内存中存储的补码
	char c = a + b;
	// 当a和b进行运算时要进行整型提升
	// 00000000 00000000 00000000 00000011 -- a整型提升后在内存中存储的补码
	// 00000000 00000000 00000000 01111111 -- b整型提升后在内存中存储的补码
	// 00000000 00000000 00000000 10000010 -- a+b运算的结果在内存中存储的补码
	// 10000010 -- c在内存中存储的补码
	printf("c = %d", c);
	// 使用%d进行打印的时候也是需要进行整型提升的,c为有符号字符,所以整型提升时按照符号为进行提升
	// 11111111 11111111 11111111 10000010 -- c整型提升后的补码
	// 10000000 00000000 00000000 01111101 -- c整型提升后的反码
	// 10000000 00000000 00000000 01111110 -- c整型提升后的原码 -- -126
	return 0;
}

        整型提升的意义:表达式的整型运算要在 CPU 的相应运算器内执行,CPU 内整型运算器(ALU)的操作数的字节长度一般就是 int 的字节长度,同时也是 CPU 的通用寄存器的长度。因此,即使两个 char 类型的相加,在 CPU 执行时实际上也要先转换为 CPU 内整型操作数的标准长度。 

9.2 算术转换

        如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数转换为另一个操作数的类型,否则操作无法进行。下面的层次体系称为寻常算术转换。

long double
double
float
unsigned long int
long int
unsigned int
int

        在上述表中,如果一个操作数的类型排在另外一个操作数类型的后面,则该操作数要先转换为另外一个操作数的类型再进行计算。比如 int 类型和 double 类型进行计算,则 int 类型要先转换成 double 类型在进行计算。 

操作符详解 1.操作符的分类1.操作符的分类•算术操作符:•移位操作符:>•位操作符:& | ^•赋值操作符:+=-=*=/=%==&=|=^=•单⽬操作符:!++--sizeof类型•关系操作符:>= 阅读详情

相关推荐

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏

MONAILabel in 3D Slicer 案例1: 在腹部CT中自动分割脾脏。

Tina姐的博客 1939

关于我重生到21世纪学C语言这件事——操作符详解

还有你,也要加油!

2401_88325505的博客 2163

UNSW-NB15数据集:网络流量分析与恶意攻击检测实战指南

本文提供了UNSW-NB15数据集在网络流量分析与恶意攻击检测领域的实战指南。详细介绍了该数据集的构成、核心特征解析、特征工程处理、机器学习模型训练与评估方法,并探讨了模型部署及持续优化的挑战与思路,帮助读者构建高效的网络攻击检测系统。

weixin_29193359的博客 258

【C语言】简单介绍进制和操作符

十进制属于一种常见的进制,它满足满十进一并且数字每一位都是0~9数字组成的。 二进制也是同理满二进一并且数字每一位都是0~1数字组成的。 十进制属于一种常见的进制,它满足满十进一并且数字每一位都是0~9数字组成的。 二进制也是同理满二进一并且数字每一位都是0~1数字组成的。注:二级制、八进制、十六进制,只是数值的不同表现形式。比如: ##进制之间转换关于这一点,首先知道每个进制的每一位有权重,N进制的数字从右到左是个位、十位、百位…,分为每一位权重是(N)0 ,(N)1 ,(N)2…。说明:将2进制的每

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 4144

ROS开发者的福音:用Anaconda虚拟环境解决Python包冲突(附完整配置流程)

本文为ROS开发者提供了使用Anaconda虚拟环境解决Python包冲突的完整方案。通过分析冲突根源,详细介绍了Miniconda安装、专用环境创建以及核心桥梁包的配置流程,并阐述了“混合环境运行”与“纯虚拟环境构建”两种实战工作流,帮助开发者实现ROS核心与特定Python库的和谐共存,从而提升开发效率和项目可维护性。

weixin_28835789的博客 338

拯救者R9000P-2021-AMD5800H黑苹果EFI配置与优化指南

本文详细介绍了在联想拯救者R9000P 2021款(搭载AMD锐龙7 5800H处理器)上安装和优化黑苹果系统的完整指南。内容涵盖EFI配置、OpenCore引导设置、关键驱动(如NootedRed核显驱动)的调整,以及安装后的性能调优与常见问题解决,旨在帮助开发者和极客用户在这款游戏本上搭建稳定可用的macOS开发环境。

weixin_29291069的博客 288

C语言操作符深度解析

/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化。struct Stu //类型声明//名字int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的 计算路径,那这个表达式就是存在潜在⻛险的,建议不要写出特别复杂的表达式。

do_yo的博客 2338

银行一表通监管报送系统详解

国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。

银行信息系统应用架构详解 2519

C语言—操作符详解(操作符、进制转换、原码反码补码、结构体)

(左移一位有乘2的效果,右移一位有除2的效果)

l1894的博客 2211

YOLOv8改进策略【损失函数篇】| 替换Powerful-IoU(PIoU),增强对中等质量锚框的关注力,引导锚框更直接、高效地回归

现有基于IoU的损失函数存在不合理的惩罚因子,导致锚框在回归过程中出现面积扩大的问题,使得回归效率降低、收敛速度变慢。同时,这些损失函数在反映锚框与目标框之间的差异、考虑目标框大小以及某些情况下的性能表现等方面存在局限性。在目标检测任务中,边界框回归的损失函数对检测性能至关重要。Powerful-IoU(PIoU)及其升级版PIoU v2正是为解决现有损失函数存在的问题而设计的。本文利用PIoU改进YOLOv8的损失函数,提高模型精度。

Limiiiing的博客 672

✨在Windows11上安装虚拟机(VMware17.6.0)保姆级教程(附安装包)

VMware Workstation Pro 是一款功能强大的虚拟机软件,它允许你在单一的物理机上运行多个操作系统。性能卓越:VMware以其出色的性能和稳定性而闻名,适合运行资源密集型的虚拟机。用户友好:直观的用户界面使得即使是初学者也能快速上手。功能全面:支持多种操作系统,包括Windows、Linux、macOS等,满足不同用户的需求。企业级支持:VMware提供全面的技术支持,适合企业级用户。恭喜你成功安装了VMware Workstation Pro 17.6.0!

Python老吕的博客 1万+

操作符详解--进制转换,移位,逗号,整型提升及优先级

本文系统介绍了C语言操作符的分类体系,包括算术、位、逻辑等操作符的使用方法。重点讲解了二进制转换原理、原码/反码/补码表示,以及移位操作符的应用场景。深入分析了操作符优先级和结合性对表达式求值的影响,探讨了整型提升和算术转换的底层机制。掌握这些知识有助于编写高效代码,避免常见陷阱,是成为优秀C程序员的基础。文章还详细说明了各种操作符的具体运算规则和注意事项。

yue_2747的博客 1360

AI Agent驱动的多模态情感分析方法:从BERT到Vision Transformer的探索

情感分析(Sentiment Analysis)是自然语言处理(NLP)与计算机视觉(CV)中一项重要任务。传统的情感分析主要依赖于文本数据,但在现实应用中,情感往往通过 语言、语音、表情、姿态 等多模态信号共同传达。因此,结合 多模态深度学习 的 AI Agent 在情感理解中具有广阔的前景。

一键难忘的博客 738

[万字速通]操作符、不同进制转换、整型提升、算术转换

[万字速通]操作符、进制转换、整型提升、算术转换

2301_81133592的博客 1598

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C语言从入门到进阶——第10讲:操作符

本文讲解C语言各类操作符,先铺垫进制转换、原反补码知识,再介绍移位、位、单目、逗号、结构体成员访问等操作符。阐述操作符的优先级、结合性两大属性,说明表达式求值的整型提升、算术转换规则,指出部分复杂表达式因计算路径不唯一存在风险,建议简化表达式保证代码可读性和可移植性。

E_evelyn的博客 2915

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C语言操作符讲解--(里面包含进制转换和原码,反码,补码)

总之,操作符是 C 语言中不可或缺的部分,它们使我们能够编写出高效、功能强大的程序。如果你对特定操作符还不是很了解的话,赶紧收藏关注起来吧!

wer24_25的博客 1466

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C语言之操作符详解

8进制的数字每一位是07的,0~7的数字各自写成2进制,最多有3个2进制就足够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位换算一个8进制位,剩余不够3个二进制位的直接换算。表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。16进制的数字每⼀位是0~9, a~f 的,0~9, a~f的数字,各⾃写成2进制,最多有4个2进制位就⾜够了,

m0_55903980的博客 1856

C语言——H/操作符详解

算术操作符: + 、- 、* 、/ 、%移位操作符:>位操作符:&、|、 ^、~赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、= 、&= 、|= 、^=单⽬操作符:!、++、--、&、*、+、-、~ 、sizeof、(类型)关系操作符: > 、>= 、< 、

我会等 1582

《C 语言操作符深度指南:代码优化与高效编程必备》

16进制的数字每一位是0~9 a~f的数字 各自写成2进制 最多有4个2进制位就足够了 比如f的二进制位是1111 所以2进制转16进制的 时候 从2进制序列的右边低位开始向左依次 每4个2进制位换算一个16进制位 剩余不够4个2进制位则直接换算。8进制数字是0~7的数字 各自写成二进制每3个二进制位就足够了 比如7的二进制位是111 所以2进制转8进制的时候 从2进制序列中 右边低位开始向左依次 每3个2进制位换算一个8进制位 剩余不够3个2进制位则直接换算。

2403_87212593的博客 2666

C语言:操作符详解

一、二进制和进制转换二、原码、反码、补码三、移位操作符四、位操作符 & | ^ ~五、单目操作符六、逗号表达式七、下标访问操作符[ ]、函数调用操作符( )八、结构访问操作符九、操作符的优先级和结合性十、表达式求值在这篇文章中,我会将所有操作符都介绍到,有些在目前阶段还无法用到的操作符将在后期系统讲解!其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进制、10进制、16进制是数值的不同表示形式而已。比如数值15的各种进制的表示形式:我们重点介绍一下二进制首先我们

2302_80177865的博客 1299

【C语言系列】操作符的详解

数组中存放多个元素,使用{}初始化;结构体中存放多个成员,使用{}初始化。intx;inty;intx;inty;intage;intdata;intmain()structStudents1={"张三","男",18,"2024090203"};//直接访问成员//结构体变量.结构体成员return0;

2301_80179750的博客 1137

[C语言]——操作符详解

目录一.操作符的分类二.二进制和进制转换1.二进制转十进制 2.二进制转八进制和十六进制2.1二进制转八进制 2.2二进制转十六进制三.原码、反码、补码四.移位操作符1.左移操作符2.右移操作符五.位操作符:&、|、^、~练习1:编写代码实现:求⼀个整数存储在内存中的⼆进制中1的个数。练习2:⼆进制位置0或者置1,编写代码将13⼆进制序列的第5位修改为1,然后再改回0六.单目操作符七.逗号表达式八.下标访问[ ]、函数调用( )1.[ ] 下标引用操作符2.函数调用操作符九.结构成员访问操作符1.结构体1.

qq_63492484的博客 1129

(持续更新中!!~)10、原来可以这样理解C语言_操作符详解

C语言_操作符详解

do_yo的博客 2361

C语言操作符详解

本文系统讲解了C语言操作符的分类、使用规则及表达式求值机制。主要内容包括:1)操作符的分类(算术、移位、位、赋值等11类);2)二进制相关概念(进制转换、原码/反码/补码);3)位操作符(& | ^ ~)和移位操作符(<< >>)的运算规则;4)结构体成员访问操作符(. ->)的使用;5)操作符优先级和结合性对表达式求值顺序的影响;6)整型提升和算术转换机制;7)问题表达式案例分析。通过具体代码示例,揭示了复杂表达式可能存在的计算路径不确定性问题。全文为深入理解C语言表达式运算

lingran__的博客 1345

C语言:位操作符

讲解C语言的位操作符。

博客网站 https://async-area.com 2461

【C语言】操作符超详细总结

• 算术操作符: + 、- 、* 、/ 、% • 移位操作符: > • 位操作符: & | ^ • 赋值操作符: = 、+= 、 -= 、 = 、 /= 、%= 、= 、&= 、|= 、^= • 单目操作符: !、++、–、&、、+、-、~ 、sizeof、(类型) • 关系操作符: > 、>= 、< 、其实我

m0_74091744的博客 1729
上一篇: C语言函数介绍 -- 库函数与标准库,形参和实参,数组作函数参数,函数的声明和定义,static,extern,函数递归
下一篇: 多路复用 select -- select 的介绍,select 的优缺点,select 版本的 TCP 回显服务器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值