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

宁波网站推广制作公司首页官网

宁波网站推广制作公司,首页官网,wordpress是h5页面跳转,wordpress后台显示英文引言:在笔试中,有一类的题目,题目给出代码,要求分析得出输出结果。这类题目更加考察我们对于运算顺序和运算类型转换的理解。文章介绍了隐式类型转换和操作符注意点,希望增加读者对于表达式求值的理解。 1.隐式类型转…

引言:在笔试中,有一类的题目,题目给出代码,要求分析得出输出结果。这类题目更加考察我们对于运算顺序和运算类型转换的理解。文章介绍了隐式类型转换和操作符注意点,希望增加读者对于表达式求值的理解。

1.隐式类型转换

        1.1.整形提升:

           C语言中运算总是至少以缺省(默认)整型类型的精度来进行的,意思就是,再做算术运算的时候,如果是char,short类型这样精度(所占字节数)的数据,小于int类型数据的精度,会在计算之前被转换为普通整形(有符号),参与运算。这样做的根本原因是CPU运算器无法处理8比特数据直接运算。注意这里的运算包括算数运算,比较运算,赋值运算等等。

        1.2.赋值的规则:   

           当高精度向低精度赋值时,多余部分直接舍去(截断)

           比如char a=-1;-1为整型,所以其补码有32个比特位:

           原码:10000000 00000000 00000001,

           反码:11111111 11111111 11111110

           补码:11111111 11111111 11111111

         而char类型只有1字节,8比特位,所以直接进行截断:11111111,截取最后八位存储在a中。

        1.3.提升的规则:

  • short,char提升为int:高位直接补充符号位(也就是补充8个比特位中的首位)补充到32位,例如char a=-1,a中储存的是11111111,在运算的时候,补充为11111111 11111111 11111111。
  • unsigned char/short提升为int:直接补充0

           如下列代码:在注释中演示了提升,截取,打印。

char a = 1, b = 127;//截取之后内存中a的补码:01111111
//截取之后内存中b的补码:00000001//提升之后a的补码:00000000 00000000 01111111
//提升之后b的补码:00000000 00000000 00000001//相加之后 的结果: 00000000 00000000 10000000char c = a + b;//截取之后内存中c的补码:10000000//打印时,提升之后的补码:11111111 11111111 10000000
//   求得提升之后的原码:10000000 00000000 10000000printf("%d", c);
//打印结果:-128

       1.4.算数转换:

          如果运算时,出现精度更高的,转化为精度最高的数据类型之后,再进行运算。比如下面代码中,计算a-b,那么需要先将a提升为float类型之后,才进行下一步运算。

int a = 1;
float b = 3.15;//int 提升为 float :化整补0
b = a;
printf("%f\n", b); //1.000000//float 转化为 int :直接舍去小数部分
a = b;
printf("%d", a);  //1

2.操作符注意点:

    2.1操作符的优先级:两个相邻的操作符,谁会先执行。

    2.2操作符的结合性:相邻的操作符相同,执行方向是什么。

    2.3是否控制求值顺序:语句的执行顺序

具体优先级顺序参考优先级表:C语言运算符优先级(超详细)_>和+的。运算优先级-CSDN博客

对于结合性说明:比如a+b+c,相邻的两个操作符都是+,所以考虑结合性,+的结合性是从左至右,所以先算a+b,再算(a+b)+c。

对于求值顺序说明:在C语言中&&,||,逗号表达式具有求值顺序。比如a&&b,执行该语句先计算a,当a为0(假)的时候,b不会计算,a为1(真)时才会计算b的值; || 同理。对于逗号表达式,从左至右,依次执行,最后表达式是整个表达式的值。

注意:问题表达式:执行顺序不唯一的表达式。在实际使用时,要避免产生这样的表达式,不然会使得编译器凌乱。比如:a*1b+2c*3d+4e*5f,执行的顺序可以是:1,3,5,2,4;也可以是:1,3,2,5,4(编号代表运算符)这样做的影响是什么?顺序不唯一,可能每个表达式(a也可以代表表达式)之间有关联,这样顺序不唯一的操作下,可能致使结果不唯一。比如如下代码:每个编译器的结果都不一样。

int fun(void)
{static int count = 1;return ++count;
}
int main()
{int answer;answer = fun() - fun() * fun();printf("%d\n", answer);//输出多少?return 0;
}

http://www.yayakq.cn/news/106015/

相关文章:

  • 济宁住房和城乡建设厅网站首页自己家里做网站网速慢
  • 食品销售公司网站制作wordpress 主题 激活
  • jsp 响应式网站模板下载合肥生态丽景网站建设
  • 做网站要会哪些技术关于校园网站的策划书
  • 贵州移动端网站建设富阳区住房和城乡建设局网站
  • 想做网站的公司好杭州小程序建设公司
  • 网站密码管理制度网站后端怎么做
  • 太原市建设工程交易中心网站舆情信息
  • 微信分销网站建设比较好班级网站建设需求
  • 做包装盒有哪些网站百度免费校园网站建设
  • 网站开发环境分析网页制作标准
  • 做一个新公司网站要多少钱外贸seo推广公司
  • access 网站数据库图文广告设计
  • 广州教育网站建设ps切片怎么做网站
  • 黑龙江省建设集团网站广西地矿建设集团网站
  • 购物网站建设哪家好网站建设解密
  • 任何用c语言做网站公司网站怎么做美观
  • 做网站市场价代理域名网站的公司
  • 做公司网页步骤成都网站建设seo
  • 室内设计的网站软件平台制作
  • 南昌新手网站建设费用淘宝网站怎么做链接地址
  • 郑州网站优化汉狮抖音开放平台是干什么的
  • 外贸网站推广seo如何提升线上销售的方法
  • 手机网站制作良心服务规划和设计一个网站
  • 东莞建网站公司平台自己做网站需要购买服务器吗
  • 自己做投票的网站天蝎网站建设
  • 淄博建设银行网站做团购网站的心得
  • 湛江网站优化快速排名稿定设计官方免费下载
  • 永康公司网站建设上海公司网站设计
  • 外贸网站推广平台产品外贸营销推广方案