首页
学习
活动
专区
工具
TVP
发布

C语言符号-运算

运行结果并不是像我们想四舍五入数学整,在C语言中本质是向0整 当然对于向0整我们也可以使用trunc库函数 (需包含math.h头文件) 示例: #include ...0; } 对于负数 示例: int main() { int a = -10; int d = 3; printf("%d\n", a/d); //C语言中是-3,...python是-4 printf("%d\n", a%d);//C语言中是-1,python是2 return 0; } 为什么就有差异了呢?...,向-∞方向整 从而C中%,本质其实是余;Python中%,本质其实是 对任何一个大于0数,对其进行0向整和-∞整,整方向是一致,故等价于余 对任何一个小于0数...,对其进行0向整和-∞整,整方向是相反,故不等价于余 结论: 两个同符号数据参与余,等价于余,不同语言余数相等 两个不符号数据参与余,不等价于余,余数大小需考虑语言整规则

2.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

C语言简单说】六:运算符以及变量扩展

┴┴ (╰(`□′)╯( ┴┴ … 这一节我们就来说另外运算符——运算符(说白了跟余数差不多…<—_-)!!!) 先看看好难懂定义:运算和余运算两个概念有重叠部分但又不完全一致。...…(后面太罗嗦就不复制了) 也是一种运算,叫做运算…(貌似有点废话<—_-)!!!)...,运算符是% 我们看以下代码: #include #include int main(){ int a=2,b=5,c;...c=b%a; printf("ba 值是%d;\n",c); system("pause"); } 我们看c=b%a 就是运算,把运算结果给...运算其实就是,我们姑且就当作余数。我们看代码我们b是5,a是1,那么运算结果等于1,那是因为5除2余1…好了就是那么简单。反正我数学不好=。

96810

Java 余 (remain), (mod) 区别和运算

大家好,又见面了,我是你们朋友全栈君。 范围区别:主要是用于计算机术语中。余则更多是数学概念。 主要区别在于对负整数进行除法运算时操作不同 那么具体是怎样不同?...首先需要知道Java中如何余,遵循尽可能让商大原则 —–余:尽可能让商绝对值更小 —–如-9rem2,-9/2=-4.5,商为-4,。...余数为-9-(2*-4)=-1 ,遵循尽可能让商小原则 —–:“向下”意思就是说尽可能让商更小 —–如-9mod2,-9/2=-4.5,商为-5。...余数为-9-(2*-5)=1 为了方便记忆: a ÷ b = c ··· r a,b 同号 时(a,b>0 || a,b<0),余相同都为r 当a,b 异号时,为 (r + b) ,余为...r 注意:在C/C++, C#, JAVA, PHP这几门主流语言中,’%’运算符都是做余运算,而在 python中’%’是做运算。

1.7K20

Python中整除和实例

2 负数除法 Python3除法采取是向下整,即向负无穷方向最接近精确值整数。...故当整除运算有负数时,结果稍有不同: 4//-3 -2 -10//3 -4 我们通常计算中,采用是向零方法计算,4//-3 = -1,-10//3 = -3。...如果希望在Python3中对负数采用向零方法计算,可以如下处理: int(4/-3) -1 int(-10/3) -3 二 Python3 中采用%表示运算,结果返回除法余数...: 21%10 1 3%4 3 但是由于Python采用是向下方式,所以对负数余结果不一样: -21%10 9 -5%4 3 结合前面负数整除计算,可以理解结果...list[-1] = e In [1] list = ["a", "b", "c", "d", "e"] print(list[-1]) e 以上这篇Python中整除和实例就是小编分享给大家全部内容了

3.9K20

C语言:大数余_c语言15和50余等于多少

大家好,又见面了,我是你们朋友全栈君。 大数余数(数组) 今天做学校oj时遇到一题,问题可见一下截图: 查遍各大论坛,都没有遇到合适方法,普通方法不可用,要采用数组形式。...值得注意一点,是不能用double等实数类型,只有整数类型才可以求余数; 因此可以考虑利用数组运算,可以先定义字符串数组char a[5000],下标多打一些没有关系,以防万一,到时候可以用scanf...个人思路是再定义一个整数数组int b[5000],先把a数组中每个字符数字转换成数字。...接下去就是小学生做题目了: 前一个数字先乘以10然后再加上后一个数,进行余数,余数再乘以10加上后一个数,以此往复即可。...完整代码如下: 1 #include 2 #include 3 int main() 4 { 5 char a[3000]; 6 int k,b[3000

1.4K20

C语言宏陷阱 #define SQU(xx*x

有同学写过或者想写这样宏定义吗? 求两个或几个数乘积: #define SQU(x) x*x 我们正常使用没有问题: 但如果这样写呢?...原因在于,宏定义本质是文本替换!所以在预处理期间SQU(5+5)这段代码被宏替换为5+5*5+5,结果因为乘法优先级高于加法,变成5+25+5,可想而知!...那么解决这个问题办法,相信大家看完之后心里应该有答案了,就是给x加个小括号,使它变成一个整体,如下: 就可以解决了。 然而,这并不没有完! 与此类似的,当我们想算两个数时候呢?...我们继续验证: 正常写,不会触发陷阱,关键没错并不代表没有问题(虽然每个x都加了小括号!) 大家试试这样写: 艾玛! 为嘛不是20*20400呢?...这么写:#define ADD(x) ((x)+(x)) 怎么样,这样写就没问题了!你宏,从此百毒不侵! 有什么学习中遇到问题,请联系我们! C语言研究中心(www.dotcpp.com)

1.3K50

C语言带参数宏定义:#define f(X) ((X)*(X))

2.知识点:不带参数宏定义l 一般形式:#define 宏名 字符串(或数值)即用字符串或数值取代宏名。l 宏名一般采用大写字母表示,以与变量名区别,也可用小写字母。...l 宏定义不是C语句,不必在行末加分号。l 对程序中用“”括起来字符串内字符,即使与宏名相同,也不进行置换。...l 宏定义可以嵌套使用,例如:#define R 3.0#define PI 3.14159#define L 2*PI*R 3.知识点:带参数宏定义l 一般形式:#define 宏名(参数表)...l 要注意有括号和没括号区别 不带参数宏定义比较简单,我们今天讲的是带参数。最后红色字体提到有括号、没括号区别。那提一个问题:怎么用宏定义表示数学上函数 f(x)=x*x ?...,使用带参数宏时,要注意参数要带上括号,最好整个宏也要带上括号: #define f(X) ((X)*(X)) 否则,容易误导别人同时,自己也容易出错。

4.8K00

【编程经验】C语言宏陷阱 #define SQU(xx*x

咳咳咳,今天讲讲C中宏定义(片面),希望对小伙伴们有帮助,开始了: 有同学写过或者想写这样宏定义吗?...求两个或几个数乘积: #define SQU(x) x*x 我们正常使用没有问题: 但如果这样写呢? 哎呀,竟然不是100了,难道SQU(10)和SQU(5+5)不等价吗?5+5不是10吗?...那么解决这个问题办法,相信大家看完之后心里应该有答案了,就是给x加个小括号,使它变成一个整体,如下: 就可以解决了。 然而,这并不没有完! 与此类似的,当我们想算两个数时候呢?...我们继续验证: 正常写,不会触发陷阱,关键没错并不代表没有问题(虽然每个x都加了小括号!) 大家试试这样写: 艾玛! 为嘛不是20*20400呢?...这么写:#define ADD(x) ((x)+(x)) 怎么样,这样写就没问题了!你宏,从此百毒不侵!

1K80

C语言指针(2

指针±整数 数组在内存中是连续存储,只要知道第一个元素地址,后面的元素依次就能找到。 int arr[]={1,2,3,4,5}; 而所对应下标为0,1,2,3,4。...p2+1); return 0; } 在下面为结果 int类型就跳过了4个字节, char类型就跳过1个字节 结论: 指针类型决定了,指针加减整数时,一次性跳过多少个字节。...2. 指针-指针 在指针变量相同类型时,计算出是中间间隔个数。...int ret = p1-p2 ; printf("%d\n", ret); return 0; } 结果为 指针类型不同时不能进行指针加减运算。...2.&数组名,这里数组名表示整个数组,取出是整个数组地址。 除此之外,任何地方使用数组名,数组名都表示首元素地址。

9510

初识C语言2

C语言中给了数组定义:一组相同类型元素集合 8.1数组定义 数组作用就是存放一组相同类型数,[]里面是数组大小,10表示这个数组可以存放10个元素,arr是数组名,int是表示这个数组是整形数组...int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素 8.2数组下标 C语言规定:数组每个元素都有一个下标,下标是从0开始。...1.算数操作符(加,减,乘,除,) + - * / % int r = 7/2; float r = 7/2; 对于除法来说,除号两端都是整数的话,执行是整数除法....除号两端只要有一个数是小数,就执行小数除法. 操作符得到是整除后余数,%操作符左右两边只能是整数。 2.移位操作符 >> << 移位操作符移动是二进制位,这个后期再讲。 ...今天分享到这里就结束啦!感谢大家阅读,下期我们将结束初识C语言,让我们下期再见。

8110

c语言进阶(2

上面三种是正确。 并且我们有一个想法,为什么要有数据类型呢?直接丢给变量一整块空间让他使用不好吗。答案当然是不好,这样会导致空间浪费。本质是对内存进行合理划分。 类型在c语言中为什么有这么多种?...二进制快速转化 : 大小端  他们两个对应二进制序列在内存中是完全一样,而值不同,是因为对其解释不同 :一定要看对应数据变量类型  如何理解大小端: 基本概念:  如何?...char c=0这样写是没有问题,但是不便于用户理解。...所以c99当中bool类型可移植性较好。 运行下面这个程序: 我们会发现输出结果是1 2 3。 第一种比较方法不推荐,因为我们会误认为是整数比较。第二种方法也不推荐,false只有C99支持。...在误差范围之内,x和y可以认为是相等。  我们也可以使用DBL-EPSILON进行比较,此时需要加上头文件 如果是下面这样一个范围,就可以证明x和y是相等

100
领券