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

做网站需要域名和什么今日头条重大消息

做网站需要域名和什么,今日头条重大消息,聊天软件开发技术,华为网站的建设目标目录 前言一、隐式类型转换1.1 整型提升 二、算术转换三、操作符的属性四、问题表达式总结 前言 表达式求值的顺序一部分由操作符的优先级和结合性决定。 有些表达式的操作数在求值的过程中可能需要转换为其他类型 一、隐式类型转换 隐式类型转换是在编译器自动进行的类型转换…

目录

  • 前言
  • 一、隐式类型转换
    • 1.1 整型提升
  • 二、算术转换
  • 三、操作符的属性
  • 四、问题表达式
  • 总结


前言

表达式求值的顺序一部分由操作符的优先级和结合性决定。
有些表达式的操作数在求值的过程中可能需要转换为其他类型


一、隐式类型转换

隐式类型转换是在编译器自动进行的类型转换,无需显式地指定转换操作。
常见的隐式类型转换情况:

  • 将小范围类型赋值给大范围类型,例如将int赋值给long
  • 将浮点类型赋值给整数类型,例如将float赋值给int
  • 整数和浮点数之间的运算,例如int与float进行加减乘除运算

1.1 整型提升

c语言的整型算术运算总是以缺省整型类型的进度来进行的。
为了保证计算的精度,表达式的字符和短整型操作数在使用之前被转换成普通整型,这个过程称为整型提升。
整型提升的原因:

表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。
当两个char类型的值相加,在CPU执行时实际要先转换为CPU内整型操作数的标准长度。
通用CPU是难以直接实现两个8比特位直接相加运算。所以,表达式各种长度可能小于int长度的整型值,都必须转换为int或unsigned int ,然后才 能送入CPU去执行。

分析下面的运算结果:

char a = 5;
char b = 126;
char c = a + b;
printf("%d",c);

当进行 a+b时,a和b需要进行整型提升
当输出c时,需要进行整型提升,并且由于整型提升后,最高位为1,符号位1则需要补码转换原码才能输出。
在这里插入图片描述

图1.1 整型提升过程图

二、算术转换

如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作无法进行。下面的层次体系称为寻常算术转换。

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

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另一个操作数的类型后执行运算。
具体例子如下,如图1.2所示
在这里插入图片描述

图1.2 算术转换代码

代码分析:
全局变量i的初始值为0,进行i–后,i的值变为-1,i的类型为int
sizeof(i)的结果为4,类型为size_tsize_t的类型为unsigned int
if条件判断-1是否小于4;
结果分析:
结果输出了>,说明在进行条件判断时,判断结果为真。(-1 > 4)这个表达式为何为真?
原因: 在进行关系运算之前,由于i的类型为int, sizeof(i)的返回值类型为unsigned int,两个操作数的类型不一致,需要进行算术转换,由上面的层次体系可知,int需要转换为unsigned int ,则i的值会变成一个非常大的无符号整数。
算术转换的过程如图1.3所示:
在这里插入图片描述

图1.2 算术转换过程

三、操作符的属性

复杂表达式的求值有三个影响的因素:

  1. 操作符的优先级
  2. 操作符的结合性
  3. 是否控制求值顺序

两个相邻的操作符先执行哪个,取决于他们的优先级。
如果两者的优先级相同,则取决于他们的结合性。

四、问题表达式

如果不能根据操作符的属性确定唯一的计算路径,那这个表达式就是存在问题的。
下面是问题表达式的例子:

  1. 表达式一
c + --c
  1. 表达式二
int main()
{
int i = 0;
i = i-- - --i * (i= -3) * i++ + ++i;
printf("%d",i);
return 0;
}
  1. 表达式 三
int main()
{
int a = 1;
int b = (++a)+(++a)+(++a);
printf("%d",b);
return 0;
}
  1. 表达式四
int fun()
{
static int count = 1;
return count++;
}
int main()
{
int answer;
answer = fun() - fun()*fun();
printf("%d",answer);
return 0;
}

总结

本篇文章介绍了c语言中的表达式求值。包括隐式类型转换,算术转换和操作符的属性。

http://www.dinnco.com/news/86272.html

相关文章:

  • 宁波建设银行网站首页如何优化网站首页
  • 装饰行业网站模板seo权威入门教程
  • 抖音广告推广产品seo标题是什么
  • wdcp网站无法访问东莞seo推广
  • 做网站 报价 需要了解中国国家人事人才培训网
  • 宁波城乡建设委员会的网站seo 重庆
  • 福州网站建设 联系yanktcn 04信息服务平台有哪些
  • 郑州汉狮做网站报价qq引流推广软件免费
  • 空间数据云网站太原做推广营销
  • 建设公司网站建设报价怎么优化
  • 哪些公司做app开发东莞seo推广机构帖子
  • 网站主页用ps做seo工资
  • 怎样才能做自己的网站博客推广工具
  • 网站 动画 怎么做的中关村标准化协会
  • 蓝莓直播视频东莞网络优化哪家公司好
  • 诚信通网站怎么做广告推广费用
  • 甘肃做网站搜索引擎优化seo优惠
  • php做网站怎么布局上海百度推广公司排名
  • 橱柜衣柜做网站朝阳区seo技术
  • 公司建设网站记什么费用企点qq官网
  • 可以提供排版的网站免费推广网站大全下载安装
  • 太原哪里做网站好精准拓客软件哪个好
  • 怎么看出网站是dede做的武汉网站排名推广
  • asp网站开发全程视频百度快照是什么意思
  • 做视频官方网站网站制作报价表
  • 关于网站建设与维护的心得体会全网推广推荐
  • 网站模板炫酷最新域名8xgmvxyz
  • 做糕点的网站有哪些手机网站排名优化软件
  • 北京酒店设计公司南京seo公司哪家
  • 余姚做网站哪家好网页分析报告案例