c语言万能陷阱,c软件陷阱

本文目录一览:

我想问一个简单的C语言问题,就是关于浮点数的陷阱。

这是因为你累加的步长是0.1,如果你加的是1.0就可以正常退出循环。

为什么步长是0.1就不行,因为double,float这类浮点数是二进制浮点数。

它的大于一部分的值,是精确的,因为大与一的值是整数,是2^0 2^1 2^2 这样二的幂累加而得的。

小于一的部分,就不一定了,它们还是由二的幂累加,从2^-1 2^-2 2^-3也就是1/2, 1/4, 1/8这样累加起来的,这样对于有些10进制的小数,是无法精确表达的,只能近似表达。

比如0.2=1/5 这个数用2的负数次冥来表示是不行的

(二的负数次冥为1/2, 1/4, 1/8

0.2=1/5 约等于51/256 = 1/256 + 25/128 = 1/256 + 1/128 + 3/16 = 1/256 + 1/128 + 1/16 + 1/8=

0 × (1) + 0 × (1/2) + 0×(1/4) + 1 ×(1/8) + 1× (1/16) + 0 ×(1/32) + 0 ×(1/64) + 1 × (1/128) +1 × (1/256) = 0.00110011 这就是0.2的二进制小数表示。

由此可见,只要小数的值不能化为二的负冥的整数倍(这种情况很多),那么二进制表示的小数,都只能是近似值。

既然是近似值你累加0.1想得到10.0的精确值自然不可能,判断i != 10基本都会失败,除非你累加的是精确的浮点数,比如1.0,或者0.125之类,整数个步长刚好可以达到你的判断条件—-10的。

所以一般这种判断,都是用i = 10这样。

求C语言大神看3道有陷阱的入门编程题?

这是C语言中的“右移运算符”。一般情况下,他是按位操作。

特点:1.双目运算符,就像+、-、*、/一样,格式为(数1)(数2)

2.数1是被操作数,如被减数、被除数等;数2是右移位数。

3.优先级低,结合性:从左向右运算

如:81=?表示将被移数向右移动1位

如何操作?

1.化十进制数为(注意了)对应的二进制数,对应指格式对应

2.通通右移,不足补0

3.化为十进制数

举例:short int a=8;a=a1;

1.a=0 000 1000

2.右移一位后:a= 0 000 100

3.补0:a=0 000 0100

4.化为十进制数:a=4

举例:int a=8;a=a1;

1.a=0 000 0000 0000 1000

2.右移一位后:a= 0 000 0000 0000 100

3.补0:a=0 000 0000 0000 0100

4.化为十进制数:a=4

一道有陷阱的C语言问题,请各位大虾们看看

改成下面的代码,注意计算sum的地方

#includestdio.h

int main()

{

int n,m,i;

double sum=0.0;

scanf(“%d %d”,n,m);

if(nm||n=0||n1000000||m=0||m1000000)

return 0;

for(i=0;i=m-n;i++)

{

double t = n+i;

sum+=1.0/(t*t);

}

printf(“%.5lf”,sum);

return 0;

}

原来你用的:((n+i)*(n+i))会溢出,65536*65536 = 4294967296超过int能表示的最大值

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/235815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 11:56
下一篇 2024-12-12 11:57

相关推荐

  • Python脚本控制其他软件

    Python作为一种简单易学、功能强大的脚本语言,具有广泛的应用领域,在自动化测试、Web开发、数据挖掘等领域都得到了广泛的应用。其中,Python脚本控制其他软件也是Python…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 量化交易软件哪个好?

    量化交易软件是为量化交易而设计的工具,能够用程序化方法对市场数据进行分析和交易决策。那么,哪个量化交易软件最好呢?下面从几个方面进行详细阐述。 一、交易功能 交易功能是量化交易软件…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python计算机二级刷题软件推荐

    Python作为编程语言的代表,已经在计算机学习和开发领域占据了重要角色。Python计算机二级是国家信息技术应用能力证书的一种,是计算机应用能力的重要评估标准。对于想要获取Pyt…

    编程 2025-04-29
  • 电脑如何下载ps软件

    如果您想在电脑上使用Photoshop,那么您需要下载安装该软件。下面是详细的步骤说明: 一、选择下载网站 目前市面上有很多下载网站都可以下载到Photoshop软件,比如Adob…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28

发表回复

登录后才能评论