十七、操作符详解(2)

news2024/11/17 10:42:37

1.操作符

(1)按位取反~

C语言中,0的符号位是0。

例:int a = 0;

        ~a = -1

按二进制补码取反,符号位也要取反,打印的是原码。

                        把一个数的二进制位的第n位变成1:a = a | (1<<n-1)

应用场合

                        把一个数的二进制位的第n位变成0:a=a&(~(1<<n-1))

(2)前置++  --      后置++    --

自增/自减可以使变量变化,但如果只是变量运算,不赋值给自身,变量的值不变。

例:

a = 1        a--        则,a = 0

a = 1        a-1        则,a = 1

(3)强制类型转换

例:int a = (int) 3.14;

(4)关系操作符

>  >=   <  <=  !=   ==

(5)逻辑操作符

&&    ||

逻辑与 &&,只要左边为假,右边就不执行了。

逻辑或 ||,只要左边为真,右边就不执行了。

短路特性

i=0        a=0        b=2        c=3        d=4

例1:

i=a++   &  ++b  &&  d++

a=0

所以,i=0        a=1        b=2        c=3        d=4

例2:

i=a++        ||        ++b        ||        d++

所以,i=1        b=3        c=3        d=4

(6)条件操作符

exp1?exp2:exp3

(7)逗号表达式

exp1,exp2,exp3,exp4,exp5,exp6...expn

从左到右依次执行,整个表达式的结果是最后一个表达式的值。

while(a,b,c)相当于  do{a,b}    while(c)

(8)其它操作符

[]:操作数为一个数组名+一个索引值

():操作数为函数名+实参

.:结构体变量.成员

->:结构体变量的指针->成员

2.表达式求值

(1)概述

win+R,calc        计算器

                        操作符的优先级和结合性

表达式求值

                        操作数在求值过程中可能需要转化成其它类型

(2)隐式类型转换

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

例:

char a = 3;

char b = 127;

char c = a+b;

则c=-126

a=3,000...11(32位),char(8位)截断,00000011

b=127,000...1111111,01111111

char是有符号的

char c = a+b;(整型提升)最高位看作符号位

a=00000011,正数的整型提升补0,000....11(32位)

b=0000...1111111(32位)

a+b=000...10000010(32位)——>截断成char型  10000010  ——>   负数整型提升补1

11111...10000010(补码)——> 11111...10000001(反码)——>10000...01111110(-126)

无符号数整型提升,补0。

整型提升,是为了匹配CPU内整型运算器(ALU)的操作数的字节长度(int),同时也是CPU的通用寄存器长度。        

只要参与表达式运算,就会发生整型提升。

例1:

char a = 0xb6;

short b = 0xb600;

int c = 0xb6000000;

if(a==0xb6)        //0x,十六进制符号

{

        printf("a");

}

if(b==0xb600)      

{

        printf("b");

}

a和b都是整型提升了,所以都不相等。

例2:

%u是无符号十进制整数

char c = 1;

sizeof(c)        1

sizeof(c+1)     4

sizeof(!c)        4

(3)算术转换

某个操作符的各个操作符属于不同类型,则会把它们转换成同一种类型。

寻常算术转换:

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

操作符属性:优先级、结合性、是否控制求值顺序

问题表达式:

例1:

a*b+c*d+e*f

无法确定真正的计算顺序,虽然不影响结果,但计算路径不唯一。

例2:

c+ --c        //--高于+

无法得知,先获取C,还是先计算--c

例3:

int i = 10;

i=i--  -  --i*(i=-3)*i++  +  ++i;

不同编译器下有不同的结果

例4:

int fun ()

{

        static int count = 1;        //延长局部变量的生命周期,之后不用管这条语句

        return ++count;

}

int main ()

{

        int answer;

        answer=fun()-fun()*fun();        //这三个函数的调用顺序无法得知

        printf("%d\n",answer);

        return 0;

}

例5:

int i = 1;

int a = (++i)+(++i)+(++i);

不清楚那个++i先被计算

表达式最终要有一个唯一确定的计算路径

3.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫头虎分享:图文创作者发布文章之前需要预览哪些内容?

&#x1f4dd; 猫头虎分享&#xff1a;作为创作者发布文章之前&#xff0c;需要预览哪些内容&#xff1f; 摘要 在发布一篇文章之前&#xff0c;预览是一个至关重要的步骤。确保文章的结构完整性、内容的连贯性以及读者的阅读体验&#xff0c;都是我们需要关注的重点。本文将…

OSPF动态路由协议实验

首先地址划分 一个骨干网段分成三个&#xff0c;r1&#xff0c;r2&#xff0c;r5三个环回网段 &#xff0c;总共要四个网段 192.168.1.0/24 192.168.1.0/26---骨干网段 192.168.1.0/28 192.168.1.16/28 192.168.1.32/28 备用 192.168.1.64/28 192.168.1.64/26---r1环回 192.1…

2024 Java 高分面试宝典 一站式搞定技术面

前言 每年9月和10月&#xff0c;被业界称为“金九银十”&#xff0c;这是人才市场一年中最活跃的时期。此时&#xff0c;企业为了来年的业务扩展&#xff0c;纷纷加大招聘力度&#xff0c;空缺岗位众多&#xff0c;招聘需求集中。同时&#xff0c;初秋的招聘活动也避开酷暑&am…

物理数据库迁移到云上

物理数据库迁移到云上 物理数据库迁移到云上通常需要以下步骤: 评估和规划 评估物理数据库的需求和约束条件&#xff0c;确定迁移的目标。考虑数据库大小、性能要求、数据复杂性等因素&#xff0c;选择合适的云服务提供商和服务模式。 设置云环境 在云平台上创建适当的虚拟…

特朗普比特币演讲:“梭哈”比特币,“抵制”数字美元!懂王新晋喊单王:比特币冲上月球,永远不要出售比特币!

2024年7月28日&#xff0c;在比特币大会(Bitcoin 2024)上&#xff0c;前总统特朗普发表了一场激情澎湃的演讲&#xff0c;放出了一系列令人振奋的政策诺言&#xff0c;引发了全场加密货币支持者的热烈掌声。特朗普表示&#xff0c;如果再次当选总统&#xff0c;他将采取一系列强…

前端框架 element-plus 发布 2.7.8

更新日志 功能 组件 [级联选择器 (cascader)] 添加持久化属性以提升性能 (#17526 by 0song)[日期选择器 (date-picker)] 类型添加月份参数 (#17342 by Panzer-Jack)[级联选择器 (cascader)] 添加标签效果属性 (#17443 by ntnyq)[加载 (loading)] 补充加载属性 (#17174 by zhixi…

Python数值计算(3)

这次说一说构造均分向量的操作。 1. 造轮子 在数值计算中 &#xff0c;我们通常要在区间[a,b]之间产生指定步长或者给定采样点的一组等差数列&#xff08;或者说是一个向量&#xff09;&#xff0c;例如MATLAB中的linspace函数&#xff0c;linspace(a,b,n)在区间[a,b]之间产生…

【神经网络】正则化缓解过拟合-Dropout

文章目录 1、简介2、Dropout 层的原理和使用3、小结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎人工智能和前端开发。 &#…

C#中的wpf基础

在WPF中&#xff0c;Grid 是一种非常强大的布局控件&#xff0c;用于创建网格布局。它允许你将界面划分为行和列&#xff0c;并将控件放置在这些行和列中。 以下是一些关键点和示例&#xff0c;帮助你理解 WPF 中的 Grid&#xff1a; 基本属性 RowDefinitions&#xff1a;定义…

AI 抠图工具 | 鲜艺AI抠图 v2.1 绿色版

&#x1f389;&#x1f389; 各位小伙伴们&#xff0c;你们是不是还在为抠图烦恼&#xff1f;别担心&#xff0c;鲜艺AI抠图神器来拯救你啦&#xff01;基于RMBG-1.4黑科技开发&#xff0c;免费使用&#xff0c;本地操作&#xff0c;告别繁琐登录和联网困扰&#xff01;&#x…

【数据结构进阶】AVL树

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C || 数据结构 目录 &#x1f308;前言&#x1f525;AVL树的概念&#x1f525;AVL树的自实现AVL树结点的定义AVL树需实现的函数接口AVL树的插入AVL树的旋转右单旋左单旋左右双旋右左双旋…

【Docker虚拟机】在极空间上快速部署智能家居自动化平台『Home Assistant 』

【Docker&虚拟机】在极空间上快速部署智能家居自动化平台『Home Assistant 』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 前段时间被粉丝问到怎么在极空间上部署Home Assistant&#xff0c;之前只是使用命令在威联通上部署过&#xff0c;所以最近正好有时间&#xff0c;在…

Ethernet

目录 1. Physical Layer(PHY)2. MAC2.1. MAC帧格式2.2. MAC地址与IP地址3. RGMII接口FPGA实现以太网(一)——以太网简介 以太网(Ethernet)是指遵守 IEEE 802.3 标准组成的局域网通信标准, IEEE 802.3 标准规定的主要是OSI参考模型中的物理层(PHY)和数据链路层中的介质访问控…

搭建DNS正向解析,反向解析+搭建DNS主从架构+搭建DNS多区域+时间同步

主要在局域网中配置&#xff0c;不存在外网 正向解析&#xff1a;域名解析为IP named.conf 解决权限 named.rfc1912.zones 解决解析方式 环境准备&#xff1a;三台机器都做下面的操作 基础配置&#xff1a;网络配置&#xff0c;关闭安全架构&#xff0c;关闭防火墙&#x…

Linux进程控制——进程等待

文章目录 进程等待进程等待的必要性进程等待的方法status参数option参数 进程等待 进程等待的过程其实是父进程等待子进程死亡的过程 进程等待的必要性 如果子进程退出&#xff0c;父进程不进行处理&#xff0c;子进程会变成僵尸进程&#xff0c;有内存泄漏的风险 僵尸进程…

docker容器cuda不可用,怎么解决?

通过Docker 构建的镜像中,启动之后,发现容器内部读取不到显卡驱动nvidia-smi 1、设置 NVIDIA Docker 存储库 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add

超逼真AI生成电影来了!《泰坦尼克号》AI重生!浙大阿里发布MovieDreamer,纯AI生成电影引爆热议!

视频生成领域的最新进展主要利用了短时内容的扩散模型。然而&#xff0c;这些方法往往无法对复杂的叙事进行建模&#xff0c;也无法在较长时间内保持角色的一致性&#xff0c;而这对于电影等长篇视频制作至关重要。 对此&#xff0c;浙大&阿里发布了一种新颖的分层框架Mov…

Kafka知识总结(选举机制+控制器+幂等性)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 选举机制 控制器&#xff08;Broker&#xff09;选举 控制器就是…

大模型算法面试题(十五)

本系列收纳各种大模型面试题及答案。 1、大模型LLM进行SFT如何对样本进行优化 大模型LLM&#xff08;Language Model&#xff0c;语言模型&#xff09;进行SFT&#xff08;Structured Fine-Tuning&#xff0c;结构化微调&#xff09;时&#xff0c;对样本的优化是提升模型性能…

从0开始搭建vue + flask 旅游景点数据分析系统(四):编写前端首页【数据驾驶舱】

本期我们编写数据驾驶舱页面(Dashboard)这个页面。主要任务是引入echarts 组件编写数据驾驶舱页面。 视频教程后续会更新在我的B站&#xff1a;https://space.bilibili.com/1583208775?spm_id_from666.25.0.0 推荐从教程第一集开始从零开始学习&#xff1a;https://blog.csdn…