表达式求值中的“整型提升”概念

一.基本原理和概念

如:代码

char a,b,c ;

a = b + c ;

该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后,再将数据进行截断存放在内存存放变量 a 的空间中。

(1)提升和截断

先来看一串代码:

#include<stdio.h>
int main()
{
  char a = 3;
  char b = 127;
  char c = a + b;
  printf("%d\n",c);
  return 0;
}

猜猜看计算出c的结果是什么呢?

-126!!!是不是很意外啊,别急,接下来让我给你分析分析

       首先我们需要知道在C语言中的表达式的计算基本都是在CPU中进行的,但是在CPU中计算的时候是需要整型才能进行计算的(也就是int型)

       根据上述原理我们就可以来分析上述代码是如何计算的了,请看下图

我个人认为通过看图可以很好的掌握,所以我制作了上图,还希望读者能够体会和彻底掌握如何来正确的理解和分析整型提升的过程

二.意义

       表达式的整型运算要在CPU的相应运算器件内执行,cpu内整型运算器的操作数的字节长度一般就是int的字节长度为4个字节,同时也是cpu的通用寄存器的长度。因此,即是两个char类型的相加,在cpu执行时实际上也要先转换为int型

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【quarkus系列】实战自定义注解实现策略模式分发

目录 序言自定义注解业务接口渠道消息实现策略分发测试知识扩展AnyAnnotationLiteral 应用场景和语法 序言 策略模式大家都应该了解或者使用过&#xff0c;此篇文章中就不再阐述&#xff0c;之前springboot项目中小编也真正的实战应用过。现在换Quarkus框架开发项目&#xff0…

Java面试题:Redis双写一致性问题

Redis双写一致性 缓存和数据库数据同步 正常流程: 读操作: 查询缓存,查询命中直接返回,没命中查询数据库将查询到的数据写入缓存,并设定超时时间 写操作: 删除缓存,修改数据库,在延时一段时间后再删除缓存 (延迟双删)延迟:等待数据库的主节点同步到从节点 因为如果先删…

C++实现,简单的命令行交互框架

目录 背景背景 在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过命令行输入命令的方式完成测试验证,将大大提升工作效率,下面的示例程序是一…

【C语言】一节课拿捏---动态内存分配

谢谢观看&#xff01;希望以下内容帮助到了你&#xff0c;对你起到作用的话&#xff0c;可以一键三连加关注&#xff01;你们的支持是我更新地动力。 因作者水平有限&#xff0c;有错误还请指出&#xff0c;多多包涵&#xff0c;谢谢&#xff01; 目录 一、 为什么要有动态内存…

winscp无法上传,删除,修改文件并提示权限不够的分析

使用winscp删除文件,报了个错如下 根据这个错就去百度,网上大部分都是通过下面这种方法解决: 在winscp端进行设置 输入主机名(即IP地址)、用户名和密码,然后点击高级 在箭头所指位置输入sudo + sftp应用程序的路径 先查询 sudo find / -name sftp-server -print点击Sh…

springboot项目中第三方jar包打包进jar包

springboot项目中&#xff0c;如果手动引入了jar包&#xff0c;打包时不会将手动引入的第三方jar包打包进价包里&#xff0c;如何处理&#xff1f; 若第三方的jar包的lib和src同级&#xff0c;则maven打包时默认不会将lib下的jar包打包进jar包&#xff0c;处理方式有两种&#…

neo4j入门并使用案例说明

1、neo4j是什么 Neo4j是一个高性能的NoSQL图形数据库&#xff0c;它将结构化数据存储在网络&#xff08;在数学角度称为图&#xff09;上&#xff0c;而不是传统的表中。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。它因其高性能、轻量级、易嵌入和…

c++(内存分配,构造,析构)

#include <iostream>using namespace std; class Per { private:string name;int age;double *height;double *weigh; public://无参构造Per(){cout << "Per::无参构造" << endl;}//有参构造Per(string name,int age,double height,double weigh):…

私募状告基金经理,七千月薪被索赔上百万

一个私募机构的基金经理&#xff0c;月薪七千元&#xff0c;但是却被公司诉讼追索100多万元赔偿。 这样“奇葩”的事情&#xff0c;不仅发生在视频网剧里&#xff0c;也发生在现实生活中。 根据日前相披露的一则案件文书&#xff0c;一家江浙一带的私募机构日前把自己的“基金…

docker create rm export exec命令详解

容器生命周期管理命令教程-3 1. 创建容器 docker create&#xff1a;创建一个新的容器但不启动它。 docker create -it --name mycontainer ubuntu bash通常使用 docker run(详细可看上一篇关于run命令的详细介绍) 2. 删除容器 docker rm&#xff1a;删除一个或多个容器。 d…

计算机网络9——无线网络和移动网络1 无线局域网 WLAN2

文章目录 一、802.11局域网的 MAC 层协议1、CSMA/CA协议2、时间间隔 DIFS 的重要性3、争用信道的过程4、对信道进行预约 二、802.11局域网的 MAC 帧1&#xff09;关于 802.11 数据帧的地址2&#xff09;序号控制字段、持续期字段和帧控制字段 一、802.11局域网的 MAC 层协议 1…

Spring boot+vue前后端分离

目录 1、前端vue的搭建 2、后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 service层 imp层 mapper 实体类 额外写一个类、解决跨域问题 3、测试 1、前端vue的搭建 建立项目的过程略 开启一个建立好…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化&#xff0c;营销系统作为企业营销管理的重要组成部分&#xff0c;扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用&#xff0c;从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

Leetcode3168. 候诊室中的最少椅子数

Every day a Leetcode 题目来源&#xff1a;3168. 候诊室中的最少椅子数 解法1&#xff1a;模拟 代码&#xff1a; /** lc appleetcode.cn id3168 langcpp** [3168] 候诊室中的最少椅子数*/// lc codestart class Solution { public:int minimumChairs(string s){int chair…

学习笔记——路由网络基础——浮动静态路由(路由备份和冗余)

2、浮动静态路由(路由备份和冗余) (1)基本概念 浮动静态路由是两条或多条链路组成浮动路由。当到达某一网络有多条路径&#xff0c;通过为静态路由设置不同的优先级&#xff0c;你可以指定主用路径和备用路径。当主用路径不可用时&#xff0c;走备用路径的静态路由进入路由表…

LeakSearch:针对网络公开凭证的安全扫描与检测工具

关于LeakSearch 在红队演戏过程中&#xff0c;往往需要获取到针对目标域的访问权限。在这个过程中&#xff0c;很多红队人员会选择使用暴露在互联网上的代理服务器来实现目标域的访问&#xff0c;那么此时就需要在互联网上收集公开暴露的凭证信息。 对于蓝队来说&#xff0c;…

使用HTML、CSS和Javascript编写一个注册界面(二)

倘若代码中有任何问题或疑惑&#xff0c;欢迎提出交流哦~ 在上一篇文章我们实现了页面的建设&#xff0c;接下来我们实现JavaScript交互逻辑。 交互功能&#xff1a; 密码显示当用户输入的内容不符合规范时报错在提交注册界面是若有报错则提交失败 密码显示 要实现密码显示的…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种&#xff09;&#x1f339;&#x1f339;&#x1f339; 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成&#x1f339;&#x1f339;&#x1f339; 三、Ingress 工作原理&#x1f431;&#x1f…

TSR,FSR,DLSS超级分辨率的原理分析

先了解一些时域抗锯齿的方法&#xff1a; TAA&#xff1a; 抖动 TAA 的主要原理是跨帧计算多个子像素样本&#xff0c;然后将它们组合成一个最终像素。最简单的方案是在像素内生成随机样本&#xff0c;但有更好的方法来生成固定序列的样本。选择一个好的序列以避免聚集非常重…

LeetCode-数学基础开篇

概念 1.实数 2.指数函数 f(x) &#xff08;a&#xff1e;0且a≠1&#xff09;【a: 底数&#xff08;常量&#xff09;&#xff0c;x: 指数&#xff08;变量&#xff09;】 特征&#xff1a;指数函数在x轴没有交点&#xff0c;是光滑的曲线 3.幂函数 f(x) 【x&#xff…