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

长沙优化网站多少钱天津建设工程信息网官方

长沙优化网站多少钱,天津建设工程信息网官方,一流的盐城网站开发,自己建网站教程1.讲解剩下的操作符 1.1:逗号表达式 逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果 例题1: //C的值是多少? int main() {int a 1;int b 2;int c (a &g…

1.讲解剩下的操作符

1.1:逗号表达式

逗号表达式,就是用逗号隔开的多个表达式。
在这里插入图片描述

逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果

例题1:
//C的值是多少?
int main()
{int a = 1;int b = 2;int c = (a > b, a = b + 10, a, b = a + 1);printf("%d", c);return 0;
}

a>b为假,返回值为0; a=b+10,a的值变为12;b=a+1,b的值变为13,则表达式b=a+1的返回值为13,因此整个表达式的值为13,即c=13。

例题2:

在这里插入图片描述

1.2:下标引用操作符[ ]

int arr[5] = { 1,2,3,4,5 };//这里的[ ]是定义数组时的语法要求,不是下标引用操作符
arr[3] = 0;//这里的[ ]是下标引用操作符,它的操作数是数组名arr与下标3

1.3:函数调用操作符( )

它有⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。

#include <stdio.h>
void test1()
{printf("hehe\n");
}
void test2(const char* str)
{printf("%s\n", str);
}
int main()
{test1(); //这⾥的()就是作为函数调⽤操作符,它的操作数是函数名test1test2("hello bit.");//这⾥的()也是函数调⽤操作符,它的操作数是函数名test2与参数"hello bit."return 0;
}

1.4:结构体成员访问操作符:.与->

a.如果知道结构体变量的名字,就可以使用.操作符来访问结构体成员
b.如果知道结构体变量的地址,就可以使用->操作符来访问结构体成员

在这里插入图片描述

2.操作符的优先级与结合性

优先级与结合性是操作符的两个重要属性,它们影响着表达式的执行顺序

2.1:优先级

相邻两个操作符的优先级不同,则哪个操作符的优先级高,先算哪个表达式。
在这里插入图片描述

2.2:结合性

相邻两个操作符的优先级相同,则根据操作符的结合性来判断先算哪个表达式。结合性分为从左往右与从右往左
在这里插入图片描述

2.3:优先级与结合性的表格

在这里插入图片描述

2.4:优先级与结合性的链接

3.表达式求值

3.1:整型提升(较难,细细品味)

当两个数据类型进行运算时:
a.若它俩的长度均小于或等于int的长度(4个字节),则需要将它们提升为int类型或者unsigned int类型后,才能进行运算。
有unsigned int就提升为unsigned int,没有就提升为int。
b.若它俩中存在大于int长度(4个字节)的类型,则看哪个类型可以表示的最大值更大,就将另一种类型提升为它这种类型。

3.1.1:整型提升的方法

有符号整数(如signed char、short)进行提升时是按照它的符号位来提升,符号位是什么高位就补什么。
无符号整数(如unsigned char、unsigned short)提升时直接在高位补0

示例1:
int main()
{//char是signed char还是unsigned char是取决于编译器的,大多数编译器下(如VS2022)是signed charchar a = 10;//a占1个字节,a的补码:00001010char b = 120;//同理b的补码:01111000char c = a + b;//a与b都是char类型,均小于4个字节,因此二者相加前都要提升为int类型/*1.将a提升为int类型a是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么a提升为int类型后的补码:000000000000000000000000000010102.将b提升为int类型b是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么b提升为int类型后的补码:000000000000000000000000011110003.再计算a+ba+b的补码:00000000000000000000000010000010将a+b的值存到c中,由于c是char类型,只能存8个比特位,因此c中存储的是10000010*/printf("%d\n", c);//%d是打印int类型的数据,而c是char类型的数据,因此要将c提升为int类型//c是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么//c的补码:10000010//将c提升为int类型后的补码:11111111111111111111111110000010 (最高位为1,说明是负数)//将c提升为int类型后的原码:10000000000000000000000001111110,即-126return 0;
}
示例2:将示例1中打印c时的%d该成%u,打印的结果是多少?
int main()
{//char是signed char还是unsigned char是取决于编译器的,大多数编译器下(如VS2022)是signed charchar a = 10;//a占1个字节,a的补码:00001010char b = 120;//同理b的补码:01111000char c = a + b;//a与b都是char类型,均小于4个字节,因此二者相加前都要提升为int类型/*1.将a提升为int类型a是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么a提升为int类型后的补码:000000000000000000000000000010102.将b提升为int类型b是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么b提升为int类型后的补码:000000000000000000000000011110003.再计算a+ba+b的补码:00000000000000000000000010000010将a+b的值存到c中,由于c是char类型,只能存8个比特位,因此c中存储的是10000010*/printf("%u\n", c);//%u是打印unsigned int类型的数据,而c是char类型的数据,因此要将c提升为unsigned int类型//c是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么//c的补码:10000010////c提升为unsigned int类型后的补码:11111111111111111111111110000010//c提升为unsigned int类型后的原码:11111111111111111111111110000010,即4294967170return 0;
}

3.表达式求值

3.1:整型提升(较难,细细品味)

3.1.1:何为整型提升?

C语⾔中整型算术运算总是⾄少以缺省(默认)整型类型的精度来进⾏的。为了获得这个精度,表达式中的字符和短整型操作数在使⽤之前被转换为普通整型,这种转换称为整型提升。

3.1.2:整型提升的意义

表达式的整型运算要在CPU的相应运算器件内执⾏,CPU内整型运算器(ALU)的操作数的字节⻓度⼀般就是int的字节⻓度,同时也是CPU的通⽤寄存器的⻓度。因此,即使两个char类型的相加,在CPU执⾏时实际上也要先转换为CPU内整型操作数的标准⻓度。

通⽤CPU(general-purpose CPU)是难以直接实现两个8⽐特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。所以,表达式中各种⻓度可能⼩于int⻓度的整型值,都必须先转换为int或unsigned int,然后才能送⼊CPU去执⾏运算。

3.1.3:如何进行整型提升?

有符号整数(如signed char、short)进行提升时是按照它的符号位来提升,符号位是什么高位就补什么。无符号整数(如unsigned char、unsigned short)提升时直接在高位补0

3.1.4:相关例题
示例1:
int main()
{//char是signed char还是unsigned char是取决于编译器的,大多数编译器下(如VS2022)是signed charchar a = 10;//a占1个字节,a的补码:00001010char b = 120;//同理b的补码:01111000char c = a + b;//a与b都是char类型,均小于4个字节,因此二者相加前都要提升为int类型/*1.将a提升为int类型a是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么a提升为int类型后的补码:000000000000000000000000000010102.将b提升为int类型b是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么b提升为int类型后的补码:000000000000000000000000011110003.再计算a+ba+b的补码:00000000000000000000000010000010将a+b的值存到c中,由于c是char类型,只能存8个比特位,因此c中存储的是10000010*/printf("%d\n", c);//%d是打印int类型的数据,而c是char类型的数据,因此要将c提升为int类型//c是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么//c的补码:10000010//将c提升为int类型后的补码:11111111111111111111111110000010 (最高位为1,说明是负数)//将c提升为int类型后的原码:10000000000000000000000001111110,即-126return 0;
}
示例2:将示例1中打印c时的%d该成%u,打印的结果是多少?
int main()
{//char是signed char还是unsigned char是取决于编译器的,大多数编译器下(如VS2022)是signed charchar a = 10;//a占1个字节,a的补码:00001010char b = 120;//同理b的补码:01111000char c = a + b;//a与b都是char类型,均小于4个字节,因此二者相加前都要提升为int类型/*1.将a提升为int类型a是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么a提升为int类型后的补码:000000000000000000000000000010102.将b提升为int类型b是signed char,将它提升为int类型时,是按它的符号位来提升的,符号位是什么就补什么b提升为int类型后的补码:000000000000000000000000011110003.再计算a+ba+b的补码:00000000000000000000000010000010将a+b的值存到c中,由于c是char类型,只能存8个比特位,因此c中存储的是10000010*/printf("%u\n", c);//%u是打印unsigned int类型的数据,而c是char类型的数据,因此要将c提升为unsigned int类型//c是signed char,将它提升为int类型时,是按照它的符号位来提升的,符号位是什么就补什么//c的补码:10000010////c提升为unsigned int类型后的补码:11111111111111111111111110000010//c提升为unsigned int类型后的原码:11111111111111111111111110000010,即4294967170return 0;
}
http://www.dtcms.com/wzjs/569571.html

相关文章:

  • 网站建设的简历范文设计师用什么软件
  • 最好的网站制作公司设计作品网站有哪些
  • 网站建设的 几点建材公司网站建设方案
  • 网站打开慢什么原因呢asp.net mvc 网站开发之美
  • 云南网站搭建搜索引擎推广公司
  • design设计网站亚马逊seo关键词优化软件
  • 广东佛山建网站百度指数热度榜
  • 江苏省城市建设信用手册网站国外建站推广
  • 中国站长站官网广东省中山市网站
  • 安徽省住房和城乡建设部网站网站编写语言什么好
  • 单页淘宝客网站2014年行吗设计网站要包含信息类型
  • 学校网站设计风格与布局建设工程项目
  • 哪个分销平台比较好网站关键词优化方式
  • 案列网站wordpress淘点金组件
  • 河北区做网站公司dw网页设计作业成品源代码
  • 公司外贸网站建设电子商务网站建设规划说明书
  • 鹤壁网站推广公司国际物流公司网站
  • 互联网开网站怎么做网站注销
  • 天马网络 网站建设深圳网站建设公司熊掌号
  • html怎么做网站电脑网站打不开是什么原因造成的
  • 一次备案多个网站crm客户关系管理系统平台
  • 承接网站网站建设成都做app定制
  • 中小型企业网站建设酒店行业的网站建设
  • 龙岗网络推广深圳网站建设wordpress 显示文章摘要
  • 马鞍山网站建设 明达中国域名注册中心
  • 淮南做网站公司洛阳做网站
  • 建设一个新的网站需要准备什么重庆綦江网站制作公司推荐
  • 网站上用什么格式的图片烟台住房和城乡建设厅网站
  • 如何替换网站外贸网站优化在线推广
  • 佛山做网站的哪个好成都酒店设计十大公司排名