C/C++相关概念和易错知识点(2)(负数取模、左右移)

负数取模怎么算, -10 % 3 = ? 负数取模怎么算, -10 % 3 = ? 简介: 今天遇到了一个很奇怪的问题:-10 % 3 = ?和 10 % -3 = ?,相信很多人都跟我一样脱口而出-10 % 3 = -1,10 % -3 = 1,然后我用计算器算了一下,结果让我很惊讶,-10 % 3 = 2,10 % -3 = -2。于是我用Java执行了两个式子,算出来的结果跟我一开始想的一样的,这怎么回事呢,经过查资料发现原来每一种... 阅读详情

前言:首先,我的博客主要记录的是部分容易遗忘,但是比较重要或是值得了解的知识点。很多基本概念我并不会阐述,所以它更适合用来复习;其次,这些知识点是从我自己的角度出发整理的,因此我认为的重点可能和你不同,有的内容可能不完整或有错误,希望大家多多包涵,如果能指出我的错误,我会非常感激!最后,我整理的知识点可能会比较琐碎,但在以后知识点多了之后我可能会进行整理。

1.小数除法

注意在进行小数除法的时候,两个相除的数至少有一个是小数,否则功能无法正常实现。在使用printf打印的时候默认打印小数后6位

0e7520a21c54411688dc0fb09fabc7bc.png​​

2. 取模操作

负数求模:负数求模的符号仅由第一个数的正负决定,第二个数的正负不影响取模的正负

10d4a5983d564b7989b917376ee03339.png取模操作适用范围:只能用于整型,浮点数不能取模

3.循环和分支语句中注意事项

(1)switch

switch语句中括号、case和default中选择的内容只能是整型或枚举类型,枚举类型可以看作特殊的常量,char类型也可以视作整型家族,因为本质上char在内存中存储的是它的ASCII码值,这个值算作一个整型。

(2)for、while、do while

for(表达式1;表达式2;表达式3)

在for的使用中要注意当执行表达式1后,会进行一次表达式2判断,为真后才进入for内部。虽然平时我们写代码意识不到这一步,因为没人会写出这么一段无用的代码,但是这个逻辑要清楚。

for、while内部执行次数比条件判断次数少1

do while循环一定是先执行do中的内容,再进行while判断,即使你发现一开始while中表达式的结果就为假。这也是区分while,for的关键部分。

do内部执行次数和while判断次数相同。

循环和分支的判断遵循0为假,非0为真,所以在判断时可以合理利用单目操作符和逻辑操作符简化

如!a相当于a==0

(3)go to

go to语句最好在需要连续跳出多个循环时使用,正常情况下不要用,能用其他方式解决的就不要用go to语句,因为这会使我们的代码逻辑变复杂。

4.区分连续赋值和逗号表达式的执行逻辑

连续赋值是从右向左的,靠右边的表达式的值依次向左附

逗号表达式是从左到右依次执行,逗号表达式的结果是最后一个表达式的结果,注意每个表达式都要执行

5.左移操作符和右移操作符细则区分

左移操作符执行规则:左边抛弃,右边补0。

因此对于负数来说,左移后就变成了正数(有且只有这一种可能)

右移操作符的执行规则就比左移操作符的要复杂,有两种操作方式;

(1)逻辑右移:左边用0填充,右边丢弃(类似于左移操作符)

(2)算数右移:左边用该值的原符号位填充,右边丢弃。这意味着在算数右移的规则下,负数右移后还是负数,而逻辑右移下,移后的数一定是正数。

对于绝大部分编译器来说,都是采用算数右移,仍有少部分编译器采用逻辑右移。

但是对于所有编译器来说,左移规则相同。这里一定要注意区分!

6.printf的重要操作技巧

(1)左右对齐

在打印多个数字时,难免会出现第一排是一位整数,第二排是两位甚至三位整数。如果不做任何处理,后续打印的数字会无法对齐,因此使用printf("%3d")或printf("%-3d"),3表示最小位宽,使打印的数字右对齐或左对齐,默认右对齐,前面加上负号变成左对齐

如果打印的位数超过你自己在前面%d间写的数字,则正常打印,但数字间的对齐效果受影响

打印字符串同理,注意空格也被视为字符

(2)限制小数位数

无论以%f还是%lf形式打印,输出的结果默认是6个小数位,用printf("%.2f")限制小数位,这里只会打印小数点后2位。

(2)和(1)可以合用,printf("%5.2f")的5用于对齐,.2用于限制小数位数,当然,你也可以加上负号让它变成左对齐

但要注意,小数点会被视为数字占掉一位

如31.41在使用printf("%5.2f")打印时最前面不会有空格

7.scanf读取字符和字符串规则

scanf在单独读取字符时,可读取空格

在读取字符串时,开头的空格自动跳过,在遇到下一处空格时自动停止

如"   Hello  World!"在读取时存入的是"Hello"开头无空格,后面的空格之后的内容不读取。

8.重要ASCII码值

字符A~Z从65~90

字符a~z从97~122

大写字母+32等于小写字母

数字0~9的ASCII码值是48~57

换行\n的ASCII码值是10

ASCII码值从0~31这32个字符不可打印,它们用于实现特定功能

9.重要占位符

%d 十进制整数

%c 字符

%s 字符串

%f 和%lf  浮点数

%p 指针

%u 无符号整数

%zd size_t类型

%o 八进制整数

%% 输出一个%

%x 十六进制整数

10.理解指针概念

首先我们要知道,CPU和内存之间有地址线连接,我们常说的64位平台即有64根地址线,32位平台则有32根地址线。每根地址线能够表示0和1,因此总共能储存2的64或32次方个地址。

以64位平台举例,每个地址由64个bit组成,即8个字节,因此储存64位平台的地址需要的指针变量的大小是8个字节。同理,32位平台需要4个字节。

严格来说,我们所说的指针是指针变量,真正的指针其实是地址,因此我们要区分日常用语和概念的定义的区别!

【C语言】负数取模、取余 如果a和d是两个自然数,d非零,可以证明存在两个整数 q 和 r,满足 a = q*d + r ,且0 ≤ |r| < |d|。其中,q 被称为商,r 被称为余数。可以看到,在不同语言中计算同一个表达式,负数“取模”结果是不同的。所以在对其商进行取整的时候,向0取整和向-∞方向取整的值都一样,这样子的话:取模的值 = 取余的值。经过上面的例子,我们已经知道了取模(余)的本质是要先计算出商是多少,而商的值取决于商的取整规则。取决于除法计算的时候,取整规则。同符号数据相除,得到的商,一定是正数,即大于0! 阅读详情

相关推荐

[深入浅出C语言]理解取整、取余和取模

给出一个定义: 如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足 a = q*d + r 且0 ≤ r < d。其中,q被称为商,r 被称为余数,取模运算求取的就是这个余数r。return 0;}结果显而易见会是1,那如果改成下面这样结果又会如何?int main(){//改成负数了int b = 3;return 0;}2>>>

Linuxhus的博客 2410

负数时取模

取模一、取模数学表达式二、使用步骤1.引入库2.读入数据总结 一、取模数学表达式 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = s

我叫DP的博客 3169

Altera Cyclone4 EP4CE15F17C8核心板硬件设计避坑指南(附AD09工程文件)

本文深入解析Altera Cyclone4 EP4CE15F17C8核心板硬件设计中的关键问题与解决方案,涵盖电源架构优化、信号完整性处理、热设计及生产调试要点。特别提供经过验证的AD09工程文件,帮助开发者规避常见设计陷阱,提升FPGA项目的成功率与可靠性。

weixin_29159441的博客 297

宝藏级别的负数取模,让你关于负数取模不在陌生 >o< 进来看看吧

负数取模相关的,取整方向,取模取余本质区别。

m0_64770095的博客 3502

ECU-TEST 快速入门

ECU-TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具。自从2003年首次发布ECU-TEST ,该软件成为了汽车ECU开发的标准工具 ,同时也逐步成为了重型机械和工业自动化开发的标准工具 。该软件是起源自于一个控制单元的系统化测试的项目研究,从而为从德累斯顿工业大学脱离出来的TraceTronic公司奠定了基础。ECU-TEST旨在完成测试案例的规范化、评估、求解和归档。得益于该软件包含大量的自动化测试方法使得测试案例的所有必要功能如创建、求解和评估

wangying202的博客 1万+

CentOS 7升级GCC踩坑记:明明装了centos-release-scl,为啥找不到devtoolset-9-gcc-c++?

本文详细记录了在CentOS 7系统中升级GCC时遇到的`devtoolset-9-gcc-c++`不可用问题及其解决方案。通过分析`centos-release-scl`安装不完整的原因,提供了从清理残留、重新安装仓库配置到完整安装devtoolset-9工具链的全套操作指南,帮助开发者彻底解决类似环境配置难题。

weixin_29252171的博客 244

负数如何取模?深度理解取模:取余运算

浮点数(或者整数相除),是有很多的取整方式的。如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数q和r,满足a = q * d + r,q为整数,且0

Codenange的博客 4856

2026 MCM Problem A:智能手机电池连续时间建模——完整解题思路附第一问解题代码

摘要:本文针对2026年MCM A题"智能手机电池连续时间建模"问题,提出基于能量守恒原理的微分方程模型。通过建立以SOC(t)为状态变量的动态系统,将屏幕亮度、处理器负载等主要耗电因素纳入统一功率框架,实现了不同使用场景下的电量变化精确描述。研究表明,屏幕亮度和CPU负载对续航时间影响最大,温度与后台任务会产生放大效应。该模型具有物理可解释性和应用扩展性,为手机电源管理提供了理论依据。(150字)

一键难忘的博客 769

C++负数取模

预习: r=余数 a=被除数 b=除数 c=商 a/b=c........r r=a-(a/b)*b 一、下面的题目你能全做对吗?1.7/4=?2.7/(-4)=?3.7%4=?4.7%(-4)=?5.(-7)/4=?6.(-7)%4=?7.(-7)/(unsigned)4=?答案:1-133-1-31073741822如过你全部答对,你可以无视后面的内容…… ...

aids78711的博客 538

【重要内容】敬告读者

由于优快云近期将要搞事情,此专栏建议已购买的用户将内容保存到本地。尚未购买的用户请待9月1日后再决定是否需要购买。如此规则上线,本人将会关闭此专栏。并寻找其他渠道进行发布。

魔落的博客 910

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

Android实现TextToSpeech控件实现语音播报--朗读文字 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1116

C/C++除法实现方式及负数取模详解(From Baidu贴吧)

一、下面的题目你能全做对吗? 1.7/4=? 2.7/(-4)=? 3.7%4=? 4.7%(-4)=? 5.(-7)/4=? 6.(-7)%4=? 7.(-7)/(unsigned)4=? 答案: 1 -1 3 3 -1 -3 1073741822 如过你全部答对,你可以无视后面的内容…… 二、除法的取整分类 除法的取整分为三类:向上取整、向下取整、向零取整。

Keep moving…… 2773

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

C/C++除法实现方式及负数取模详解

http://blog.youkuaiyun.com/sonydvd123/article/details/8245057 一、下面的题目你能全做对吗? 1.7/4=? 2.7/(-4)=? 3.7%4=? 4.7%(-4)=? 5.(-7)/4=? 6.(-7)%4=? 7.(-7)/(unsigned)4=? 答案: 1 -1 3 3 -1 -3 1073741

CCodeMonkey 1175

基于HTML5的酒店在线预订系统设计与实现

1.背景介绍 酒店预订系统,作为现代酒店业务中的重要一环,其便捷性、智能化程度直接影响着酒店的服务质量和经营效果。近年来,随着互联网技术和移动设备的快速发展,以及消费者行为的日益电子化,酒店预订系统也正在经历一场深刻的变革。传统的酒店预订系统往往依赖于复杂的软件安装和硬件设备,而新一代的酒店预订系统则更加强调在线、移动和云端的特性。HTML5作为一种前

AI天才研究院 1909

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【转】C/C++除法实现方式及负数取模详解

原帖:http://blog.youkuaiyun.com/sonydvd123/article/details/8245057 一、下面的题目你能全做对吗? 1.7/4=? 2.7/(-4)=? 3.7%4=? 4.7%(-4)=? 5.(-7)/4=? 6.(-7)%4=? 7.(-7)/(unsigned)4=? 答案: 1 -1 ...

weixin_30706507的博客 262

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C/C++除法及取模

除法的取整分为三类:向上取整、向下取整、向零取整。 1.向上取整:向+∞方向取最接近精确值的整数。在这种取整方式下,7/4=2,7/(-4)=-1,6/3=2,6/(-3)=-2 2.向下取整:向-∞方向取最接近精确值的整数。在这种取整方式下,7/4=1,7/(-4)=-2,6/3=2,6/(-3)=-2 3.向零取整:向0方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。

zhengfushijie的专栏 2513

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C/C++相关概念和易错知识点(9)(C语言易错语法总结)

= 4,而a = (2 + 2, a * 5, a + 10, 4 + 5) 表达式的值是9, a == 9。4.含++,--的表达式的值取决于++或--的位置,前置则先执行++,--操作,再返回值;,而char arr[10] = 'H'不可行,因为'H'表达式的值是H的ASCII码值而不是地址。也可防止在解读代码时先入为主,如 1

SGlow0708的博客 1042

C/C++相关概念和易错知识点(4)(指针与内存)

b和c是int类型,b+c也是int类型,int数据放到short里面发生截断,最终表达式是short类型,起决定性的是等号左边的变量的类型,sizeof计算的就是short的大小。(这里有点绕,需要好好消化)二维数组本质上是以一维数组为元素的数组,所以二维数组传参传的就是一维数组的地址(首元素地址),创建 int arr[3][4]就用int(*p)[4](数组指针)来接收,p每加1就跳一行4个元素,如果要读取某一行的具体的某个元素,就需要先对p解引用得到一行p元素的地址,再解引用得到单个元素的地址。

SGlow0708的博客 1074

【C++实例总结】负数取模运算

转载: https://www.cnblogs.com/widerg/p/7208041.html https://blog.youkuaiyun.com/u013094181/article/details/21863491 1.取模运算 (1)全都是正数,全都是负数情况 7%2=1, (-7)%(-2)=-1 没有争论,比较好理解 (2)一正一负情况 如a%b, 第一种情况...

kevin的博客 8793

大数对大数取模c语言,C++使用string的大数取模运算(5)

本次项目目标:使用C++完成对于大数的相关运算,具体有加减乘除取模。项目要点1.大数指的是远超long long int的数据2.将大数用矩阵进行存储,并通过矩阵实现运算3.本人采用字符串进行存储,应注意char的特点比如:char a=161;cout<此时会输出-95,而不是161,char类型首个比特位是作为正负号的取模运算其实和取余差不多,主要是取模在负数方面与取余不同需要用到之前博...

weixin_42350914的博客 1033
上一篇: C/C++相关概念和易错知识点(13)(扫雷初步实现、思路)
下一篇: C/C++相关概念和易错知识点(3)(操作符、进制转换)
-SGlow-
博客等级 码龄3年 1513粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值