c – 为什么使用int i的值;未定义的行为,但使用rand()的值不是?
发布时间:2020-12-16 10:41:18 所属栏目:百科 来源:网络整理
导读:如果我没有初始化我,我不知道它的价值,但我也无法预测rand()的值. 但另一方面,我知道未初始化的i的值在INT_MIN和INT_MAX之间,我也知道rand()的值介于0和RAND_MAX之间. 为什么使用未初始化的未定义行为的值但使用rand()的值不是? 解决方法 未初始化变量的值
如果我没有初始化我,我不知道它的价值,但我也无法预测rand()的值.
但另一方面,我知道未初始化的i的值在INT_MIN和INT_MAX之间,我也知道rand()的值介于0和RAND_MAX之间. 为什么使用未初始化的未定义行为的值但使用rand()的值不是? 解决方法
未初始化变量的值未定义. rand()的返回值被明确定义为给定种子的伪随机序列中的下一个数字.
您可以依赖rand()返回伪随机数.您不能依赖未初始化的i的值的任何特征. 我查阅了C99标准(ISO / IEC 9899:1999),这是我唯一可用的标准文件,但我很怀疑这些事情已经发生了变化.在第6.2.6节类型的表示中,声明允许整数存储在存储器中,其填充位未指定,但可能包括奇偶校验位,它将在初始化时设置,并对整数进行任何算术运算.某些表示(例如奇偶校验不匹配)可能是陷阱表示,其行为未定义(但可能会终止您的程序). 所以,不,你甚至不能依赖未初始化的int i为INT_MIN< = i< = INT_MAX. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |