当前位置: 首页 > news >正文

南宁月嫂网站建设财经直播的网站开发一个多少钱

南宁月嫂网站建设,财经直播的网站开发一个多少钱,近期十大热点事件,精品资料网站#x1f440;樊梓慕#xff1a;个人主页 #x1f3a5;个人专栏#xff1a;《C语言》《数据结构》《蓝桥杯试题》 #x1f31d;每一个不曾起舞的日子#xff0c;都是对生命的辜负。 目录 前言#xff1a; 一、隐式类型转换 #xff08;一#xff09;整型提升的意义… 樊梓慕个人主页 个人专栏《C语言》《数据结构》《蓝桥杯试题》 每一个不曾起舞的日子都是对生命的辜负。 目录 前言 一、隐式类型转换 一整型提升的意义 二如何进行整型提升呢 二、算数转换 三、操作符的属性 一操作符优先级汇总 二一些问题表达式 前言 本篇文章汇总了在进行表达式求值时一些容易出现错误的点介绍整型提升的相关内容并提供操作符优先级汇总表格供大家参考希望大家多多支持博主创作博主会持续带来更多优质内容 GITEE相关代码fanfei_c的仓库 一、隐式类型转换 假如有这样一段代码 char a, b, c; ... a b c; 计算机是以什么逻辑来进行计算的呢 实际上C的整型算术运算总是至少以缺省默认整型类型的精度来进行的。 为了获得这个精度表达式中的字符(char)和短整型操作数(short)在使用之前被转换为普通整型(int)这种转换称为整型提升。 一整型提升的意义 表达式的整型运算要在CPU的相应运算器件内执行CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度同时也是CPU的通用寄存器的长度。因此即使两个char类型的相加在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPUgeneral-purpose CPU是难以直接实现两个8比特字节直接相加运算虽然机器指令中可能有这种字节相加指令。所以表达式中各种长度可能小于int长度的整型值都必须先转换为int或unsigned int然后才能送入CPU去执行运算。 所以上面的代码逻辑为b和c的值被提升为普通整型然后再执行加法运算。 加法运算完成之后结果将被截断然后再存储于a中。 二如何进行整型提升呢 整形提升是按照变量的数据类型的符号位来提升的。 负数的整形提升 char c1 -1; 变量c1的二进制位(补码)中只有8个比特位 1111111 因为 char 为有符号的 char 所以整形提升的时候高位补充符号位即为1 提升之后的结果是 11111111111111111111111111111111 正数的整形提升 char c2 1; 变量c2的二进制位(补码)中只有8个比特位 00000001 因为 char 为有符号的 char 所以整形提升的时候高位补充符号位即为0 提升之后的结果是 00000000000000000000000000000001 无符号整形提升高位补0 举个栗子 //实例1 int main() {char a 0xb6;short b 0xb600;int c 0xb6000000;if (a 0xb6)printf(a);if (b 0xb600)printf(b);if (c 0xb6000000)printf(c);return 0; } 答案c 分析实例1中的a,b要进行整形提升但是c不需要整形提升。 a,b整形提升之后,变成了负数所以表达式 a0xb6b0xb600 的结果是假但是c不发生整形提升则表达式 c0xb6000000 的结果是真。 //实例2 int main() {char c 1;printf(%u\n, sizeof(c));printf(%u\n, sizeof(c));printf(%u\n, sizeof(-c));return 0; } 答案1 4 4  分析实例2中的c只要参与表达式运算就会发生整形提升表达式 c 就会发生提升所以 sizeof(c) 是4个字节。表达式 -c 也会发生整形提升所以 sizeof(-c) 是4个字节但是 sizeof(c) 就是1个字节。 二、算数转换 那么如果表达式的各个操作数属于不同的类型时又该如何处理呢 此时就需要将其中一个操作数转换为另一个操作数的类型否则就无法计算下面给出操作数类型转换的优先级该层次体系成为寻常算数转换。 如果某个操作数的类型在上面这个列表中排名较低那么首先要转换为另外一个操作数的类型后执行运算。 警告 但是算术转换要合理要不然会有一些潜在的问题如精度丢失 float f 3.14; int num f;//隐式转换会有精度丢失 三、操作符的属性 复杂表达式的求值有三个影响的因素 操作符的优先级操作符的结合性是否控制求值顺序 两个相邻的操作符先执行哪个取决于他们的优先级。 如果两者的优先级相同取决于他们的结合性。 一操作符优先级汇总 二一些问题表达式 //表达式的求值部分由操作符的优先级决定。 //代码1 a* b c * d e * f 分析代码在计算的时候由于*比的优先级高只能保证*的计算是比早但是优先级并不 能决定第三个*比第一个早执行。 所以表达式的计算机顺序就可能是 a* b c* d a* b c * d e * f a * b c * d e * f 或者 a * b c * d e * f a * b c * d a * b c * d e * f //代码2 c --c; 分析同上操作符的优先级只能决定自减--的运算在的运算的前面但是我们并没有办法得 知操作符的左操作数的获取在右操作数之前还是之后求值所以结果是不可预测的是有歧义 的。 //代码3-非法表达式 int main() {int i 10;i i-- - --i * (i -3) * i i;printf(i %d\n, i);return 0; } 分析同上代码3有歧义此时程序运算的结果就取决于编译器了。 如下图 //代码4 int fun() {static int count 1;return count; } int main() {int answer;answer fun() - fun() * fun();printf(%d\n, answer);//输出多少return 0; } 分析 answer fun() - fun() * fun(); 中我们只能通过操作符的优先级得知先算乘法 再算减法。但是函数的调用先后顺序无法通过操作符的优先级确定。 //代码5 #include stdio.h int main() {int i 1;int ret (i) (i) (i);printf(%d\n, ret);printf(%d\n, i);return 0; } 分析这段代码中的第一个 在执行的时候第三个是否执行这个是不确定的因为依靠操作符的优先级和结合性是无法决定第一个 和第三个前置 的先后顺序。 经过上面的例子我们可以得出结论 我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径那这个表达式就是存在问题的此时的结果取决于该编译器是如何编译的。 本篇文章的内容就到这里为了防止大家以后再遇到类似表达式求值问题时出错大家可以收藏本篇文章随时查阅操作符优先级与类型转换相关内容
http://www.pierceye.com/news/118410/

相关文章:

  • 苏州网站建设孙峰南宁站建站时间
  • 海淀手机网站设计公司苏州建设工程有限公司
  • 兰州网站设计制作王妃貌美还狠凶
  • 做新闻微网站有哪些淘宝优惠劵做网站模版
  • 网站维护的意义百度一下官网首页百度
  • 我是做网站怎么赚钱外贸网站google推广
  • 无锡网站seo报价软件开发模型是对软件开发过程的一种规范描述
  • 暴利产品竞价单页网站微信电商小程序开发公司
  • 网站中的搜索功能怎么做怎样在网站做友情链接
  • 新闻单位建设网站的意义怎么和其它网站做友情链接
  • 做哪类网站没有版权问题帮忙做公司网站
  • 商城式网站具备哪些功能吗郑州网站设
  • 潍坊市做网站沈阳专业网站制作团队
  • 婚恋网站女孩子都是做美容西安做网站南通公司
  • 网站制作培训中心想做网站建设
  • 免费模板素材网站ppth5开源网站模板
  • 建筑型专业网站有哪些网站想做个链接怎么做的
  • 公司建站文案给网站公司看的wordpress打赏
  • 卡密网站怎么做交易所网站建设教程
  • 响应式网站建设代理wordpress程序在ftp中上传到空间 网页怎么打不开
  • 做网站中网页的大小赤峰建筑人才网
  • 4s店网站建设美的集团网站建设方案书
  • 专业做商铺的网站哪些网站有二维码
  • 房屋备案查询系统官网盐城网站优化公司
  • 江苏网站设计页面设计文献
  • 快排做网站排名泰安哪个做网站
  • 淄博做网站的公司都有哪些网站开发职业环境分析
  • 网站性能视频 怎么做网站
  • 惠安建设局网站做基础销量的网站
  • 网页制作与网站建设自考制作ppt的软件免费下载