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

网站搭建文案如何提高网站的功能性建设

网站搭建文案,如何提高网站的功能性建设,上海网站关键词优化,小程序软件定制一.隐式类型转换:整型提升 C的 - “整型算术运算” - 总是至少以 - “缺省整型类型” - 的精度来进行的。 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为 - 普通整型 - ,这种转换称为整型提升。 整型提升的意义&#x…

一.隐式类型转换:整型提升

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

整型提升的意义:

表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是 int 的字节长度,
同时也是CPU的通用寄存器的长度。

因此,即使两个 char 类型的相加,在CPU执行时,实际上也要先转换为CPU内整型操作数的标准长度。

通用CPU是难以直接实现两个 8 比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。
所以,表达式中各种长度可能小于 int 长度的整型值,都必须先转换为 int 或者 unsigned int ,然后才能送入CPU去执行运算。

1.注意:长度 大于 int 的,就不需要“整型提升”!!!

负数的整型提升,高位补充“符号位”,即为 1
正数的整型提升,高位补充“符号位”,即为 0
无符号 整型提升,高位补 0

2.整型提升:是按照变量的数据类型的“符号位”来提升的。

char a, b, c;
a = b + c;b 和 c 的值被提升为 普通整型,然后再执行加法运算。
加法运算完成后,结果被 截断,然后再存储在 a 中。  //这句话非常重要如何完成 整型提升 呢?整型提升 是按照变量的数据类型的 符号位 来提升的。//负数的整型提升
//-1 的原码:10000001
//-1 的反码:11111110
//-1 的补码:11111111
char c1 = -1;
变量 c1 的二进制位(补码)中只有8个比特位:
11111111
因为 char 为有符号的 char
所以整型提升的时候,高位补充“符号位”,即为 1
提升之后的结果是:
11111111 11111111 11111111 11111111//正数的整型提升
//+1 的原码、反码、补码相同 00000001
char c2 = 1;
变量c2的二进制位(补码)中只有8个比特位;
00000001
因为 char 为有符号的 char
所以整型提升的时候,c
提升之后的结果是:
00000000 00000000 00000000 00000001//无符号 整型提升,高位补 0

3.是对“补码”进行“整型提升”!!!!


//错误的解答过程//11111111  -127  a 
//11111111 11111111 11111111 11111111 整型提升 //01111111   127  b
//00000000 00000000 00000000 01111111 整型提升//   11111111 11111111 11111111 11111111  a
//   00000000 00000000 00000000 01111111  b
// 1 00000000 00000000 00000000 01111110  c=a+b  (溢出)
//   01111110 截断,保存到 c 中
//char c 是有符号的,符号位为 0//由于是按照 %d 的形式输出
//整型提升   00000000 00000000 00000000 01111110  结果为:
//正数的原码,反码,补码相同#include <stdio.h>int main()
{char a = -127;char b = 127;char c = a + b;printf("%d\n", c);  //正确的结果为:0return 0;
}//正确的解答过程:  由此知:是对“补码”进行“整型提升”//11111111  -127  a  (原码)
//10000000 (反码)
//10000001 (补码)
//11111111 11111111 11111111 10000001 整型提升 ,由此可知:是对“补码”进行“整型提升”//01111111   127  b  
//00000000 00000000 00000000 01111111 整型提升//  11111111 11111111 11111111 10000001  a
//  00000000 00000000 00000000 01111111  b 
//1 00000000 00000000 00000000 00000000  c=a+b          
//截断,将 00000000 保存到 char c 中,由此知:是 0,是正数//由于是按照 %d 的形式输出
//整型提升   00000000 00000000 00000000 00000000  
//正数的原码,反码,补码相同//所以结果是:0

这个例子要特别注意!有助于深入理解!

#include <stdio.h>int main()
{char a = 3;char b = 127;char c = a + b;  //(a+b)的值先“整型提升后”,再被 截断,再存入到 c 中//以 %d\%u 打印的时候,再进行“整型提升”!!!printf("c=%d\n", c);  //%d:以10进制的形式打印 “有符号” 的整数 c   //正确答案:-126  //二进制原码(屏幕上显示原码):10000000 00000000 00000000 01111110//二进制补码(内存中存储):printf("c=%u\n", c);  //%d:以10进制的形式打印“无符号”的整数 c//正确答案:4294967170//二进制补码:11111111 11111111 11111111 10000010  //因为char是有符号的,以“符号位”来“整型提升”//正数的原码、反码、补码相同return 0;
}//char a, b, c;
//a = b + c;//步骤一:b 和 c 的值被提升为 普通整型,然后再执行加法运算。
//步骤二:加法运算完成后,结果被 截断,然后再存储在 a 中。  //这句话非常重要//步骤一://3             00000011    正数,符号位为 0
//对a整型提升   00000000 00000000 00000000 00000011//127           01111111    正数,符号位为 0
//对b整型提升   00000000 00000000 00000000 01111111//00000000 00000000 00000000 00000011  a
//00000000 00000000 00000000 01111111  b
//00000000 00000000 00000000 10000010  c=a+b//步骤一的注意点:
//我在得出c=a+b的结果为:10000010的时候,直接进行计算为:132,其实这是错误的,答案不是这个!!!//10000010     c
//%d :%d:以10进制的形式打印 “有符号” 的整数 c 
//char 是有符号位的,在C语言中,char可以是有符号的,也可以是没有符号的,具体由编译器决定,大部分编译器都是有符号的//步骤二://将被截断   则c中存放的是 10000010  ,可以看出,这是一个 负数(char 是“有符号”的)
//由于,char c 是有符号的,且 符号位 为 1,即为 负数//c=a+b      10000010
//整型提升   11111111 11111111 11111111 10000010//负数 在内存中以“补码”形式存储,但是 屏幕上显示的是“原码”。//补码:11111111 11111111 11111111 10000010
//反码:11111111 11111111 11111111 10000001
//原码:10000000 00000000 00000000 01111110  //屏幕上显示原码: -126

这道题也非常值得品味,有助于理解

#include <stdio.h>int main()
{char a = -1;char b = 1;char c = a + b;printf("%d\n", c);  //正确的结果为:0return 0;
}//10000001  a  -1(原码)
//11111110  (反码)
//11111111  (补码)
//整型提升:11111111 11111111 11111111 11111111//00000001   b   1
//整型提升:00000000 00000000 00000000 00000001//   11111111 11111111 11111111 11111111  a
//   00000000 00000000 00000000 00000001  b
// 1 00000000 00000000 00000000 00000000  c=a+b//截断,将 00000000 保存到 c 中,可知 char c 是有符号的正数 0 //以 %d 十进制的形式输出
//整型提升:00000000 00000000 00000000 00000000  (补码)正数的补码、反码、原码是一样的,所以输出是 0 
//屏幕上看到的是 原码

4.“整型提升”后的值是“补码”,屏幕上看到的是“原码”,所以,还要将“补码”转换成“原码”,再求出结果


//10000011  a  -3(原码)
//11111100  (反码)
//11111101  (补码)
//整型提升:11111111 11111111 11111111 11111101//00000001   b   1
//整型提升:00000000 00000000 00000000 00000001//   11111111 11111111 11111111 11111101  a
//   00000000 00000000 00000000 00000001  b
//   11111111 11111111 11111111 11111110  c=a+b//截断,将 11111110 保存到 c 中,可知 char c 是有符号的负数  //以 %d 十进制的形式输出
//整型提升:11111111 11111111 11111111 11111110 (补码)
//          11111111 11111111 11111111 11111101 (反码)
//          10000000 00000000 00000000 00000010 (原码)  结果为:-2#include <stdio.h>int main()
{char a = -3;char b = 1;char c = a + b;printf("%d\n", c);  //正确的结果为:-2return 0;
}

5.字节长度 大于 int 的,就不需要“整型提升”

#include <stdio.h>int main()
{char a = 0xb6;short b = 0xb600;int c = 0xb6000000;if (a == 0xb6)      //因为 a 是 char 类型,1 个字节,所以要进行“整型提升”,所以 if 的条件为 假{printf("a\n");  //无法输出}if (b == 0xb600)    //因为 b 是 short 类型,2 个字节,所以要进行“整型提升”,所以 if 的条件为 假{printf("b\n");  //无法输出}if (c == 0xb6000000) //因为 c 是 int 类型,4 个字节,所以不要进行“整型提升”,所以 if 的条件为 真{printf("c\n");  //输出结果:c}return 0;
}

//只要"参与表达式运算"就会发生"整型提升",表达式 +c,就会发生提升,所以 sizeof(+c) 是4个字节。
//表达式 -c 也会发生“整型提升”,所以,sizeof(-c) 是 4 个字节,
//但是 sizeof(c) ,就是 1 个字节。#include <stdio.h>int main()
{char c = 1;printf("%d\n", sizeof(c));   //结果:1printf("%u\n", sizeof(-c));  //结果:4printf("%u\n", sizeof(+c));  //结果:4return 0;
}

文章转载自:

http://wMXjPIN7.rkmhp.cn
http://E3cNwViO.rkmhp.cn
http://yU20UqWU.rkmhp.cn
http://LA7NMO9a.rkmhp.cn
http://JXAoAcBY.rkmhp.cn
http://UBEHd5uk.rkmhp.cn
http://Jbpzg3Ls.rkmhp.cn
http://G3C33spN.rkmhp.cn
http://s9nTEMDa.rkmhp.cn
http://wSFT7gub.rkmhp.cn
http://ZJWmjWz4.rkmhp.cn
http://bLw7u0jL.rkmhp.cn
http://39eESWiZ.rkmhp.cn
http://bOoYzeYi.rkmhp.cn
http://uyojQ5pF.rkmhp.cn
http://TgLwScYY.rkmhp.cn
http://RklpiStg.rkmhp.cn
http://cTETAHlS.rkmhp.cn
http://xLSxlDeA.rkmhp.cn
http://vGpqGQRJ.rkmhp.cn
http://cUpyhXwZ.rkmhp.cn
http://3NiV2ZUg.rkmhp.cn
http://kLQVQiNX.rkmhp.cn
http://quYF1tJC.rkmhp.cn
http://YJuslRNU.rkmhp.cn
http://2rmDykf0.rkmhp.cn
http://nQokMhfY.rkmhp.cn
http://W7g10iwy.rkmhp.cn
http://WJ9RoLuV.rkmhp.cn
http://smwpR7AE.rkmhp.cn
http://www.dtcms.com/wzjs/656122.html

相关文章:

  • 制作网站联系方式WordPress集成插件
  • 好网站页面仿淘宝网站模板
  • 网站界面用什么软件做地方门户网站盈利模式
  • 在线股票交易网站开发网络设计工资高吗
  • 广州优化网站排名作业提交免费网站
  • 网站系统繁忙是什么原因杭州 网站设计制作
  • 宣武上海网站建设网站的版式设计有哪些
  • 网站设计与制作软件做相册哪个网站好用
  • 企业网站建设新站国际要闻时事快报
  • 让网站打开更快重庆低价网站建设
  • 网站如何做seo优化教程大气简约企业网站模板免费下载
  • wdcp 网站建设品牌网站建设信息
  • 网站网站平台建设方案网站设计培训成都哪家好
  • 广告设计公司相城黄埭网站关键词优化方式
  • 域名主机网站导航摄影网站 蜂鸟
  • 网站设计师加油站在线代理浏览器网站
  • 游戏发号网站源码长春专业企业网站建设价格
  • c程序设计课程网站建设论文建设工程竣工规划局网站
  • 淘客网站难做吗WordPress知更鸟主题怎样安装
  • 高端网站建设哪些好上海企业建站推荐
  • 优秀网站设计案例分析wordpress文档主题
  • 做自己的网站的好处长沙中小企业网站建设
  • 潍坊市建设工程管理处网站南通房产网
  • 信阳网站开发公司电话页面设计零基础
  • 荣茂网站建设建网站需要什么知识
  • 用狐狸做logo的网站青岛住房和城乡建设部网站
  • 电子商务及网站建设珠海网站建设乐云seo在线制作
  • 河北省建设注册中心网站首页做网站app需要懂些什么软件
  • 微信公众号私自建设电影网站黄页 网站模板
  • 网络精准营销推广常用的seo查询工具有哪些