计算机408考研先导课---C语言难点

news2024/12/25 9:12:12

        以下为小编在重温C语言时,容易犯错的一些点,希望列出来对大家有一定帮助!

一、整型变量数的范围

类型说明符长度(字节)数的范围
int4/2(有些为4字节,有些为2字节)-32768~32767
short2-2^{15}~2^{15}-1
long4-2^{31}~2^{31}-1
unsigned 4/20~65535
unsigned short20~65535
unsigned long40~2^{32}-1

注意:

1、unsigned即为无符号数,int数的范围给的是2字节情况下的

2、printf中,均用%d表示

3、浅浅的为初学者推导一下为什么数的范围是这样的:

        首先,在计算机中,数是以补码的形式存储,原因在于,使用补码,可以将符号位和数值域进行统一的处理;同时,加法和减法当中用补码也可以进行统一的处理(CPU当中只有加法器),此外,尤其是补码与原码的运算过程是可以进行相互转换的。

        其次,原码是以首位为符号位,0代表正数,1代表负数,正数的补码与原码相同,而负数需要先将数值位取反,再进行+1操作,才能得到补码。

        众所周知,2字节即为16位,去掉符号位,还剩15位。我们很容易想到7fff为最大的整数,即32767,大家肯定很好理解,8001代表的是-32767,但其实最小的整数补码形式为8000,即-32768,它不能用取反加一的结论得出,我们要用补码的定义式得出:即[X]补=X(X>=0);[X]补=X+2^{n}(X<0,n为补码的位数)。

 4、可能会存在溢出的情况,请注意数的范围

比如说以下这段代码就会溢出,请大家想想计算机最后算出的结果为多少?

#include<stdio.h>

int main() {
	short i = 90787;
    short j =-345635;
	printf("i=%d,j=%d", i,j);
		return 0;
}

        首先对于i,它是一个short类型的,只有16位,也就是说,超过32767就会溢出。我们可以先将90787转换为2进制,然后保留后面的16位,就能得到。这里要注意,是16位全部,而不只是数据位15位。也就是说如果short i=65535;(二进制补码为01,1111,1111,1111,1111)我们要舍弃掉高位,保留低位,然后再将补码转换为原码,输出数值-1。大家可以下去验算一下,90787最后输出的结果为25251。同理,对于j,我们先化为二进制补码,再舍弃最高位,保留低16位,转为原码,得到最终结果。

5、强制转换

        会算溢出了,这几个整型变量间的强制转换也自然而然的会算,无非就是舍弃高位,将剩余的补码改为原码。

二、几个容易出错和遗忘的表达式

1、自增,自减表达式

i++、i--:使用i之后,再让i的值增加1或减少1

++i、--i:使用i之前,让i的值先增加1或减少1

举一个小小的例子:

#include<stdio.h>

int main() {
	short i = 2;
    short j = 3; 
	printf("i=%d,j=%d", i++,--j);
		return 0;
}

运算结果:i=2,j=2

记忆小技巧:符号在后边的表示最后再做这个符号运算

2、逗号表达式

形式:表达式1,表达式2

求法:先求表达式1,再求表达式2,最后结果为表达式2的值

#include<stdio.h>

int main() {
	int a;
	a=((a=3*5,a=a+5),a*4);
	printf("a=%d",a);
		return 0;
}

分析:先计算a=3*5,即a=15。然后算出a=a+5,即20。最终a的结果为a*4,即80

注意:

1、逗号表达式可以扩展为表达式1、表达式2……、表达式n

2、逗号表达式的优先级最低

3、强制转换运算符

表达式:(类型名)(表达式)

例如:(double)a、(int)(x+y)、(float)(5%3)

三、浮点数表示

        这个对于没有学过计算机组成与设计的同学来说,可能有一点难理解,小编尽可能给大家讲明白。首先,我们先讲一点简单的,对于浮点型常量,我们有两种表达形式:一种是我们通俗易懂的小数,另一种是指数形式。

        但是要特别注意,对于科学计数法,字母e(或者E)之前必须有数字,且E后面的指数必须为整数,例如:1e3、1.8e-3、123e-6这些都是正确的表达式。

        不过我们更喜欢将它“规范化”,这样也看得舒服点。例如123.456,可规范化描述为1.23456e2。

        紧接着,我们俩谈一下浮点型数据是如何存储的。浮点型数据一般在内存中占4个字节,即32位,这32位从前到后分为符号部分、指数部分以及尾数部分。其中符号占据1位,指数占据8位,尾数部分占据23位。其中最为复杂的是指数8位用原码表示,并且需要减去一个偏移量127(学过移码的肯定很熟悉),也就是说指数为0111,1111仅仅代表指数为0。同时,尾数为了节省空间,是做了规范化的,它把小数点前的那个1给省略掉了,需要大家自己去“补上”。

        行嘞,估计大家乍一看,发现自己根本看不懂。我们做一个转换的例子,大家可能看了之后就明白了。

请将 11010101,01000101,00000000,00000000转换为小数

首先,符号位1,代表这是一个负数 

其次,指数部分为10000011,它代表的十进制数为1+2+128=131,再减去127偏移量,即4

再者,对于尾数部分,需要自己补上一个1,即1.1000101000000000……,再考虑一下指数为4,即小数点往右边移4位11000.10100000……,算出来的十进制数为24.625

        特别注意:float在c语言中,有效位为7位,这是指整数部分与小数部分一共7位,因为单精度用23位存储,加上1位隐藏位,满足10^{7}<2^{23+1}<10^{8},同理,双精度位数为52位,有效位是16位。这也是为什么输入3.6,输出3.600000的原因。

#include<stdio.h>

int main() {
	float a=3.6;
	
	printf("a=%f",a);
		return 0;
}

 好的,本期的博客就到此结束啦,祝愿大家在考研的路上越走越顺!

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcMap出图小技巧:主图设计、图例、比例尺、指北针、标题

ArcMap一个重要的功能是出图&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 因为图片对于一些文字描述来说更为直观&#xff0c;所以掌握一些出图技巧也是极为重要的&#xff0c;不仅能让我们在数据处理过程快速得到我们想要的图层&#xff0c;也可以让图层看起…

Teradata退了? 无所谓,GBASE会出手

近期&#xff0c;就在2月15日&#xff0c;国内IT界有搞出个大瓜&#xff0c;Teradata以对中国当前及未来商业环境的不确定性&#xff0c;慎重考虑后决定退出中国运营&#xff0c;后续将进入中国公司关闭程序。Teradata是一家有着40多年历史的数据仓库企业&#xff0c;被业界专业…

动态规划从入门到精通-蓝桥杯

一、了解动态规划1.简单来说动态规划是一种状态转移与递推2.例题引入——最少硬币问题有多个不同面值的硬币(任意面值)&#xff1b; 数量不限&#xff1b; 输入金额S&#xff0c;输出最少硬币组合。 &#xff08;回顾用贪心求解硬币问题。&#xff09;贪心法硬币面值1、2、5。支…

2023年中职网络安全竞赛跨站脚本渗透解析-2(超详细)

跨站脚本渗透 任务环境说明:需求环境可私信博主! 服务器场景:Server2126(关闭链接)服务器场景操作系统:未知访问服务器网站目录1,根据页面信息完成条件,将获取到弹框信息作为flag提交;访问服务器网站目录2,根据页面信息完成条件,将获取到弹框信息作为flag提交;访问…

CenterMask paper笔记

CenterMask是一个anchor free的实例分割模型&#xff0c; 来自paper: CenterMask: Real-Time Anchor-Free Instance Segmentation 提起anchor free, 会想到FCOS模型&#xff0c;是用来目标检测的&#xff0c; 那么这里就用到了FCOS, 不过换了backbone, 在FCOS检测出目标框后&…

插装式比例插装阀比例节流阀比例顺序阀放大器

都是直动式&#xff0c;不需要最小先导压力以及先导流量。它们的动作执行都是基于平衡力的设计理念。&#xff08;电磁力能按比例地反作用于液压力&#xff09;所有的比例螺线管都是按照5000psi&#xff08;350bar&#xff09;的标准设计&#xff0c;所以这些阀的所有口都可以承…

卷积网络与全连接网络的区别

问题卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络&#xff0c;是深度学习。卷积神经网络具有表征学习能力&#xff0c;能够按其阶层结构对输入信息进行平移不变分类&#xff0c;因此也被称为“平移不变人工神经网络。全连接神经网络是具有多层感知器的的网络&a…

vs2022 实现无线调试安卓(Windows)

文章目录VS安装安卓调试环境前提条件Android SDK 版本查看安卓开启无线调试开启开发者模式打开USB调试功能打开无线调试功能查看配对信息&#xff08;再次点击无限调试&#xff0c;不是switch开关&#xff09;准备电脑端输入adb命令配对安卓查看设备清单如果没有设备VS无线调试…

python--matplotlib(3)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库&#xff0c;需要numpy库的支持&#xff0c;支持用户方便设计出二维、三维数据的图形显示&#xff0c;制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…

C++性能白皮书

最近看完了《C性能白皮书》&#xff0c;这本书列出了一些性能优化的思路&#xff0c;不过只是一些指引&#xff0c;没有讲具体细节&#xff0c;我整理出了其中的关键点分享给大家&#xff1a; 硬件篇 作为一个程序员&#xff0c;想要性能优化&#xff0c;最好要了解些硬件&…

关于JavaScript使用window.onload的解释说明

文章目录window.onload简介为什么使用window.onload()绑定有名的函数绑定执行多个函数window.onload 与 jQuery ready() 区别window.onload简介 window.onload() 方法用于在网页加载完毕后立刻执行的操作&#xff0c;即当 HTML 文档加载完毕后&#xff0c;立刻执行某个方法。 …

苹果手机怎么拦截垃圾短信,亲测有效的方法,图文教学

​当小伙伴的苹果手机频繁收到垃圾短信时&#xff0c;不仅会影响正常的日常生活&#xff0c;还有可能泄露个人信息&#xff0c;给小伙伴带来不必要的麻烦。苹果手机怎么拦截垃圾短信&#xff1f;本文小编将介绍苹果手机拦截垃圾短信的实用技巧&#xff0c;帮助你轻松应对垃圾短…

PPT怎么做都丑?试试这个自动化工具吧,酷炫报表的救星!

昨晚在网上冲浪的时候&#xff0c;看到某位字节员工在脉脉上发帖&#xff1a;31岁&#xff0c;被PPT弄丢了工作&#xff0c;理由是PPT做得太丑&#xff0c;配不上公司形象&#xff0c;建议人力评估&#xff0c;安排离职沟通。 其实看到这时&#xff0c;我并没有多大得感触。因…

Ceres的自动求导实现原理剖析

目录数学原理实现原理总结首先注意数值求导和自动求导在使用的时候的不同之处。 实际上&#xff0c;正是自动求导这个地方使用了类模板&#xff0c;导致它不仅可以传入参数&#xff0c;还可以传入Jet类型的数据&#xff0c;从而实现了参数的雅可比矩阵的计算&#xff0c;完成自…

centos7 搭建ELK(elasticsearch、logstash、kibana)

1、下载安装包 使用华为镜像站下载速度很快&#xff0c;华为镜像站&#xff1a;https://mirrors.huaweicloud.com/home&#xff0c;下载时需要保证版本一致 2、安装elasticsearch 解压到当前目录 [rootlocalhost elk]# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz 安…

RFID盘点软件为企业提供RFID固定资产管理方案

随着科技的发展&#xff0c;固定资产管理系统也经过了一些变革&#xff0c;从刚开始的单机版逐渐发展成SaaS版本&#xff0c;物联网版本等。从刚开始只支持条形码到支持二维码、RFID码。RFID固定资产管理系统上线后&#xff0c;通过给每个实物资产绑定一个RFID码标签后&#xf…

2022-06-16_555时基的迷人历史和先天缺陷!

https://www.eet-china.com/news/magazine220608.html 555时基的迷人历史和先天缺陷&#xff01; 发布于2022-06-16 03:39:12 LARRY STABILE 流行数十年的555时基&#xff0c;业内不知晓的工程师应该寥寥无几&#xff01;几乎所有的数字电路教材中&#xff0c;都有该芯片的身影…

华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】

使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12201821.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 分糖果 小明从糖果…

第六章.卷积神经网络(CNN)—CNN的实现(搭建手写数字识别的CNN)

第六章.卷积神经网络(CNN) 6.2 CNN的实现(搭建手写数字识别的CNN) 1.网络构成 2.代码实现 import pickle import matplotlib.pyplot as plt import numpy as np import sys, ossys.path.append(os.pardir)from dataset.mnist import load_mnist from collections import Order…

实时数仓Hologres新一代弹性计算组实例技术揭秘

作者&#xff1a;王奇&#xff08;花名慧青&#xff09; 阿里云Hologres研发 随着实时数仓在业务生产系统的普及&#xff0c;资源弹性、资源隔离等保障业务稳定性方面的技术需求开始变得越来越迫切。Hologres在保障业务方面持续优化核心技术竞争力&#xff0c;过去一年中&…