找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1678|回复: 13
打印 上一主题 下一主题
收起左侧

C语言变量赋值问题

[复制链接]
跳转到指定楼层
楼主
ID:709761 发表于 2022-5-28 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么给变量赋值,超过数据类型最大值,编译为什么不报错

51hei图片_20220528085901.png (33.87 KB, 下载次数: 54)

51hei图片_20220528085901.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2022-5-28 11:27 | 只看该作者
给变量赋值,超过数据类型最大值,属于:溢出
而溢出, 属于正常范畴,并不属于错误,所以,编译器直接用有效位继续编译,是不会报错的。

举个简单的例子, 一个 uchar 类型变量,0~255  当你255的时候继续+1, 就会归0,这是正常的,不属于错,而判断是否溢出,就要你通过程序检测标志位来决定,是用进位,还是做别的处理。
回复

使用道具 举报

板凳
ID:883242 发表于 2022-5-28 12:31 | 只看该作者
float表示最大范围是-3.4e38 ~ 3.4e38,你这才4.5e6,是不是上学的时候没学过科学计数法啊!?
回复

使用道具 举报

地板
ID:554500 发表于 2022-5-28 14:54 | 只看该作者
编译器只管语法对错
回复

使用道具 举报

5#
ID:1026496 发表于 2022-5-28 18:00 | 只看该作者
编译器不检查变量的有效范围哦
回复

使用道具 举报

6#
ID:709761 发表于 2022-5-30 10:06 | 只看该作者
Hephaestus 发表于 2022-5-28 12:31
float表示最大范围是-3.4e38 ~ 3.4e38,你这才4.5e6,是不是上学的时候没学过科学计数法啊!?

看清小数点
回复

使用道具 举报

7#
ID:883242 发表于 2022-5-30 12:52 | 只看该作者

你回初中学习什么叫科学计数法去!
回复

使用道具 举报

8#
ID:1030991 发表于 2022-5-30 16:37 | 只看该作者
c语言报错好像只管语法错误,别的不管
回复

使用道具 举报

9#
ID:883242 发表于 2022-5-30 18:16 | 只看该作者
杨鑫荧 发表于 2022-5-30 17:09
给变量赋值,超过数据类型最大值,属于:溢出 而溢出, 属于正常范畴,并不属于错误,所以,编译器直接用有 ...

你没学过科学计数法?根本就没超过类型最大值!
回复

使用道具 举报

10#
ID:624769 发表于 2022-5-30 18:59 | 只看该作者
现在的人,真的很喜欢:  抛开本质,看现象……

问题的本质是什么?
问题的本质只有一句话:  为什么给变量赋值,超过数据类型最大值,编译为什么不报错

针对这个问题:
学过编程基础的人都知道。
你定义一个 char  a;  (-128~ 127)
你让  a = 300;  
会报错么??

那么,实际试验的时候,定义的数字有没有真的超限,还重要么?
回复

使用道具 举报

11#
ID:871721 发表于 2023-10-26 23:26 来自手机 | 只看该作者
Hephaestus 发表于 2022-5-30 12:52
你回初中学习什么叫科学计数法去!

他写的是"4500000.9000000"中间有个小数点,读法是四百五十万点九,至于为什么9后面为什么加那么多的零我不知道
回复

使用道具 举报

12#
ID:883242 发表于 2023-10-27 07:55 | 只看该作者
3253087609ydrq 发表于 2023-10-26 23:26
他写的是"4500000.9000000"中间有个∈悖练ㄊ撬陌傥迨虻憔牛劣谖裁�9后面为什么加那么多的零 ...


float表示最大范围是-3.4e38 ~ 3.4e38,你这才4.5e6,是不是上学的时候没学过科学计数法啊!?
回复

使用道具 举报

13#
ID:195496 发表于 2023-10-27 08:19 | 只看该作者
编译器只取有效位数,超出精度范围的没有用,会舍弃掉的。
回复

使用道具 举报

14#
ID:871721 发表于 2023-11-10 00:01 来自手机 | 只看该作者
Hephaestus 发表于 2023-10-27 07:55
float表示最大范围是-3.4e38 ~ 3.4e38,你这才4.5e6,是不是上学的时候没学过科学计数法啊!?

小学只学了a×10(1≤a<10)这种,没学关于e的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表