读书笔记《c语言深度解剖》(2)

《C语言深度解剖》20题手把手教学 目录 1.下面代码输出什么?为什么? 2.下面代码会有什么问题,为什么? 3.下面的代码i和j的值分别是什么?为什么? 4.下面代码里,假设在32位系统下,各sizeof计算的结果分别是多少? 5.下面代码的结果是多少?为什么? 6.下面的代码,哪些内容可以被改写,哪些不可以被改写 7.下面的两段代码有什么区别?什么时候需要使用代码(2)? 8.在32位的X86系统下,输出的值是多少? 9.0x01<<2+3的值为多少?为什么? 10.定义一个函数宏,求x的平方 11.下面 阅读详情

5.sighned, unsighned关键字
前两天的日志里面也已经提到过,这里就不说太多了。可以直接记住的是,一个32位的sighned的类型可以表示的范围是:-2^31——2^31-1,一个32位的unsighned的类型可以表示的范围是:0——2^32-1,以此类推。
主要是看到下面一个问题: 看似很简单,结果输出为255.我也看过书上的分析了,现在自己独立重新分析一便。
char类型一共占8位,由于没有声明是unsighned,所以a中的每个元素可以表示的最小数为:-2^7为-128.一开始,a[0] = -1,a[127] = -128, a[128] = -129。但是-129超出了char的表示范围,它需要用9位存储,-129的原码本来应该是1 1000 0001,所以补码为1 0111 1111(最高一位的1表示符号)。所以a[128]的值为其低八位为0111 1111. 然后一直到a[254] = -255,-255的补码为1 0000 0001,a[255] = -256。这里就要注意了,-256的原码为1 0000 0000(其中最高位的1既代表数值又代表符号),-256的补码和原码相同,所以a[255]的值为其低八位0000 0000。而a[256] = -257的原码为11 0000 0001,补码为10 1111 1111,低八位为1111 1111和a[0] = -1相同。又开始新的一轮循环。。。。。
这样,a[0]到a[254]的值都不为0,而a[255]为0。strlen函数是计算字符串长度的,不包含最后的'/0',而判断一个字符串结束的标志就是看是否遇到了'/0'。如果遇到了'/0',则本字符串结束。
所以本题的输出为255。

6.void关键字
不能声明一个void变量(在vc6和gcc下都会编译错误),但是可以声明一个void指针,并且,可以把有类型的指针赋值给void指针,但是不能把void指针赋值给有类型的指针。 在c语言中,不加返回类型限定的函数,会被编译器视为返回整形。例如: 所以,在函数不需要返回任何东西时,应注明返回类型为void。
同时,如果函数没有参数,也应该声明为void。因为,在c++中 向一个无参函数传递参数是不合法的。但是在c语言中,这样却是可以的。所以,为了避免混淆,若函数不需要接受参数,一定要声明为void。

《C语言深度解剖》PDF 《C语言深度解剖》 立即下载

相关推荐

C语言深度解剖.pdf

C语言深度解剖

C语言深度解剖

一、关键字 1.关键字 是编译器能认识的特殊字符串符号。C语言共有32个关键字,含sizeof,计算对象所占内存空间的大小。 2.定义 创建一个对象并分配一块内存。 3.声明 告诉编译器,名字已经匹配到了一块空间,别的地方不能用它来作为变量名或对象名。声明没有分配内存,可以出现多次声明。 4.局部变量 也叫自动变量。是一个一次性变量,用的时候入栈,不用的时候出栈,这样可以更高效的利...

guorong520的博客 984

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 405

C语言深度剖解PDF

《C语言深度剖解》 链接:https://pan.baidu.com/s/1VC0ssjR1k2TLUOa7EXWIqg 提取码:vs1p

林夕07 1939

zds1104示波器使用指南

(2)将探头连接到探头补偿端,按下auto setup按键,一键捕获。(3)连接需要测量信号,开始查看波形。操作说明书,可以自行查看操作说明书。

m0_61973119的博客 6762

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

《C语言深度解剖》(1):新手必读,基础知识框架全解析✍️✍️

什么是C语言?C语言快速上手?如何学习C语言?C语言知识体系框架

更新C/C++,数据结构与算法,计算机视觉,深度学习,目标检测 1547

LinuxCNC 源码解析:从界面开发到硬件交互的实战指南

本文深入解析LinuxCNC源码架构,从用户界面开发到硬件交互的实战指南。涵盖GTK与Tkinter界面开发、HAL硬件抽象层、G代码解析器改造及运动控制核心等关键模块,提供定制化开发技巧与性能优化方案,助力开发者高效掌握数控系统开发。

weixin_27066963的博客 189

C语言深度解剖——读书笔记-2、关键字

1.6 signed、unsigned 关键字 规则:单纯的char 类型应该只用于字符值的存储和使用;有符号和无符号的 ”char“ 型变量只能用于数值的存储和使用。 char 有三种不同的类型:单纯 char 、signed char 及 unsigned char 。signed char 和 unsigned char 类型是用来声明数值的; 单纯 char 类型是真正的字符类型,

Cawen的技术博客 1089

[Python]:热血传奇-Wzl,Wzx的解析

首先我们要了解,wzl与wzx的对应关系,wzx里面存的是每张二进制图片数据在wzl中的偏移量,所以取到wzx中的偏移数据就可以取到wzl每张图片数据,其实就这么简单。结构体为 [Byte][Byte][Byte][Byte][short][short][short][short][int]-读取44至48字节代表为,[wzx中偏移值总数量] [int类型] [4字节]-根据在wzx中取得的偏移值总数量,每张图片偏移值在wzl中取图片数据。2.[取wzl中图片偏据]:根据wzx中取得数据对[

qq_36138506的博客 3444

Nexus3国内高速下载指南:多版本全平台资源汇总

本文针对国内开发者从官网下载Nexus 3速度慢、易失败的问题,提供了详尽的解决方案。汇总了Windows、Linux、macOS等多个平台的Nexus 3历史及最新版本(如3.31.1)的国内高速下载链接,并附有版本选择建议与Linux环境下的快速启动指南,帮助用户高效获取和部署这一流行的仓库管理工具。

jwt8token的博客 431

C语言深度解剖读书笔记2

struct 平时我们要求函数的参数尽量不多于四个,如果函数的参数多于四个使用起开非常容易出错(包括每个参数的意义和顺序都容易弄错),效率也会降低(与具体CPU有关)。这个时候,就可以用结构体压缩参数个数。 空结构体多大 结构体所占的内存大小是其成员内存之和,如果成员内存为0,例如: struct student { }stu; sizeof(stu)的值是多少? 在Visual C++上测试结...

weixin_43665091的博客 276

【第33话:车辆控制】自动驾驶车辆运动学模型推导及详解

自动驾驶车辆的运动学模型以自行车模型为核心,通过状态方程。

一碗白开水一 830

C语言深度解剖读书笔记(2.字符的技巧)

本节接触了,C语言中的三大蛋疼:符号优先级  ++i顺序点  贪心法  (其实这里面好多都是跟编译器有关的,而且有好多问题都是可以通过良好的编程习惯避免的) 本节知识点: 1.注释问题:     注释不能把关键字弄断,如:in/*注释*/t     注释不是简单的剔除,而是使用空格替换     编译器认为双引号括起来的内容都是字符串,双斜杠也不例外。如:char *p = "heh/

qq418674358的专栏 3544

基于Simulink的PID控制器自动驾驶仿真建模示例

本文通过Simulink仿真平台,详细讲解了基于PID控制器的自动驾驶路径跟踪实现方法。主要内容包括:1)建立自行车运动学模型作为被控对象;2)定义参考路径与横向误差计算方法;3)设计PD控制器并调试参数;4)在Simulink中搭建完整仿真模型;5)分析30km/h车速下的双移线跟踪性能。文章强调PID控制作为自动驾驶入门基础的重要性,并指出其在中低速场景下的适用性,同时给出了工程实践中的优化建议(如前视距离、抗积分饱和等)和扩展方向(如Stanley控制器)。通过完整案例,帮助读者掌握车辆运动学建模和P

xiaoheshang_123的博客 64

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C语言深度解剖(精讲版)——读书笔记2 &&自己的一些理解

第一章:关键字 知识点一:最“小气”的关键字----static          关键字static在C语言中主要有2个作用: 作用一:修饰变量          变量又分为全局变量和局部变量,但它们都存在内存的静态区; 修饰变量的类型

尹宣_liang的嵌入式成长之路 1489

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C语言深度解剖——读书笔记-4、符号

第二章    符号 2.1 注释符号 知识点一:几个似是而非的注释问题 C语言的注释可以出现在C语言代码的任何地方,这句话对不?好,我们来从下面的例子分析中找出答案: 例: (a) int /*....*/i;                 (b)char  *s="abcdefg     //hijklmn";                  

Cawen的技术博客 996

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 读书笔记《c语言深度解剖》(1)
下一篇: 读书笔记《c语言深度解剖》(3)
jiangyi711
博客等级 码龄20年 67粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值