寒假提升(6)[杂烩典型题]

2024-02-11 02:44
文章标签 提升 寒假 典型 杂烩

本文主要是介绍寒假提升(6)[杂烩典型题],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

天可补,海可填,南山可移。 日月既往,不可复追。 ——曾国藩


知识点

  • 1、关于整形提升
  • 2、大小端
  • 3、使用函数时参数的影响
    • 3、1、计算大小(有函数存在)
    • 3、2、计算大小(无函数存在)
    • 3、3、形参和实参
  • 4、关于赋值

1、关于整形提升

char a=101;
int sum=200;
a+=27;
sum+=a;
printf("%d\n",sum);

这段代码的结果是什么呢?
首先关于char,存储的时候是是一个字节,意味着的是最高只能是2的7次方-1。为什么是7次方呢?
因为char是有符号的类型,符号位占了一个字节,也就还剩下127为最高,最小为-128。
此外,127和-128其实是连在一起的,意思是,对于char或者是别的一些有符号的类型也相当于是这样的,从0开始一直加1,能到127,在加上1就会变成-128,然后再加,最后又到0。
所以,a=101加上27,变成的是相当于-128,存储方式是1000 0000作为补码存储再内存中,符号位是1。但是在和int类型的sum进行计算时会整型提升(可以点进去看看,里面有相关介绍),此时由于最高位置是1,所以高位补1,然后再取反+1。为-128,所以sum+=a为sum=200-128=72。

2、大小端

关于大小端的判断方法,有两种。
一种是地址的强制转换,反正强制转换的话,会从低地址来取地址。
还有一种方法就是,利用联合体,利用它的存储的特点来判断。
关于细节和实现的操作,这里有,请点击
那么,这样的话,知道了大小端,这题应该会好些点。

int value = 1024;
char condition = *((char*)(&value));
if(condition) value += 1; condition = *((char*)(&value));
if(condition) value += 1; condition = *((char*)(&value));
printf("%d %d", value, condition);

问:最后的结果是什么?
1024的二进制是:0000 0000 0000 0000 0000 0100 0000 0000
注意: * ((char * )(&value)),这句话的意思是获得value低地址的8为数据,若数据是采用大端存储方式,则低地址对应的是数据的高位,即最左边的8位0,则condition=0,不执行两个if语句,则value不变,还是1024;若数据是采用小端存储方式,则低地址对应的是数据的低位,即最右边的8位0,则
condition=0,不管是大段还是小段,结果都是一样的,都是取全部是0。

3、使用函数时参数的影响

3、1、计算大小(有函数存在)

void func(char para[100])
{
void *p = malloc(100);
printf("%d, %d\n", sizeof(para), sizeof(p));
}

此时,printf的结果是什么呢?
对于char para[100],来说,传到函数中的时候已经发生了改变,传参的时候也只是会传首元素的地址。所以在计算的时候,两个的结果都是4(32位下的指针的大小)。

3、2、计算大小(无函数存在)

在64位操作系统上,下面程序返回结果是?

int main()
{
int *k[10][30];
printf("%d\n", sizeof(k));
return 0;
}

此时的大小不再指的是指针,因为这个结构,是指针数组,那么计算的就是这个数组的大小,然后呢,数组中存储的是指针,再64位上,指针的大小是8个字节,然后这个函数指针,存储了300个指针,所以结果是2400个字节。

3、3、形参和实参

#include <stdio.h>
void func(char *p) { p = p + 1; }
int main()
{
char s[] = {'1', '2', '3', '4'};
func(s);
printf("%c", *s);
return 0;
}

==在调用的时候,创建的只是形参,形参对于原来的实参的拷贝,在函数中的参数,他们的生命周期只会在函数中,离开函数,就会销毁。==所以,p的改变不会对s的指向没有什么影响。这和链表中还是有区别的。

4、关于赋值

若有定义语句: char s[3][10],(*k)[3],*p; 则以下赋值语句错误的是?
1.p = s;
2.p = k;
3.p = s[0];
4.k = s;

下面哪些是错的?
在没有强制类型转换的情况下,只有类型完全相同的指针才能相互赋值。

char s[3][10]中s运算时会退化为数组指针,类型是char ( * ) [10]。

char ( * k)[3]很明显k就是一个数组指针,类型也为 char (*)[3]

char * p类型为char * 指针

s[0]代表二维数组第一行,此时运算时,会退化成为第一行的首元素的地址。
所欲对于答案来说,答案是124。

这篇关于寒假提升(6)[杂烩典型题]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698625

相关文章

poj2505(典型博弈)

题意:n = 1,输入一个k,每一次n可以乘以[2,9]中的任何一个数字,两个玩家轮流操作,谁先使得n >= k就胜出 这道题目感觉还不错,自己做了好久都没做出来,然后看了解题才理解的。 解题思路:能进入必败态的状态时必胜态,只能到达胜态的状态为必败态,当n >= K是必败态,[ceil(k/9.0),k-1]是必胜态, [ceil(ceil(k/9.0)/2.0),ceil(k/9.

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

提升PrestaShop外贸电商网站安全的几款行业必备工具

提升PrestaShop外贸电商网站安全的几款行业必备工具 PrestaShop发展历程 PrestaShop是一款优秀且强大的外贸开源电商软件,我们开始使用PrestaShop始于2009年,那时PrestaShop还是0.9版本:界面清新,性能强悍,扩展友好等特性,既没有Magento的笨重,也没有ZenCart的古老,更没有OpenCart的脆弱,因此PrestaShop如雨后春笋,迅速

深度剖析AI情感陪伴类产品及典型应用 Character.ai

前段时间AI圈内C.AI的受够风波可谓是让大家都丈二摸不着头脑,连C.AI这种行业top应用都要找谋生方法了!投资人摸不着头脑,用户们更摸不着头脑。在这之前断断续续玩了一下这款产品,这次也是乘着这个风波,除了了解一下为什么这么厉害的创始人 Noam Shazeer 也要另寻他路,以及产品本身的发展阶段和情况! 什么是Character.ai? Character.ai官网:https://

Axure元件库Ant Design中后台原型模板:提升设计与开发效率的利器

企业对于中后台产品的设计与开发需求日益增长。为了提升用户体验和开发效率,设计者和开发者们不断寻求更加高效、统一的解决方案。Ant Design,作为阿里巴巴开源的一套企业级UI设计语言和React组件库,凭借其丰富的组件和统一的设计风格,已成为众多项目的首选。而在Axure中使用Ant Design元件库,更是为中后台产品的原型设计带来了极大的便利。 Ant Design简介 Ant D

【JavaScript】let与var的区别及变量、函数提升

有var与无var的区别   在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口。 let与var的区别   在上面代码中,我们使用var语句声明变量x。因此,变量x的范围是函数范围。if语句内的变量x就是if语句外创建的变量x。因此,在你修改if语句块内变量x的值的时候,也会修改函数中变量x的所有引用的

如何通过食堂采购小程序端降低成本,提升效率?

随着数字化管理工具的普及,越来越多的食堂正在引入小程序来优化采购流程,减少成本和提升效率。食堂采购小程序端通过技术手段实现了自动化、智能化的管理方式,为管理者提供了极大的便利。本文将探讨如何利用技术手段开发一个高效的食堂采购小程序端,并提供一些代码示例,帮助你理解其背后的实现原理。 1. 简化采购流程 在食堂采购小程序中,简化采购流程是核心目标之一。我们可以利用数据库和后端服务来实现快速下单

自我提升社团成立啦,欢迎各位同学加入~

欢迎加入 大家好,我是马丁,我们的自我提升社团成立啦,欢迎有新的朋友加入!! 我们的社团主要目标是帮助每个人实现自我成长、自我提升,不论他是什么年龄、什么经验、什么专业,只要有一个好学和想进步的心,都可以加入。 为了提升帮助每个人实现自我成长,目前社团选择的是做一个智能客服系统,我们希望通过搭建一个企业级的智能客服系统来帮助每个人实现自我成长。后续,还会开发更多系统~ 目前群里大多是Jav

亿发:中小型制造企业数字化转型典型场景、痛点、解决方案

随着全球制造业的不断发展,中小型制造企业正面临前所未有的挑战和机遇。数字化转型成为了企业提升竞争力、优化生产效率、应对市场变化的关键路径。然而,对于资源相对有限的中小型制造企业而言,数字化转型并非易事。他们在推进转型的过程中往往遇到许多典型场景和痛点。本文将分析这些场景及痛点,并给出针对性的解决方案,帮助中小制造企业成功迈向数字化。 场景一:生产计划与调度的复杂性 典型场景: 在生产过程