【发布时间】:2017-11-27 23:36:41
【问题描述】:
今天在尝试使用 C++ 程序时,我尝试使用读取的代码从垃圾值中获取随机变量
int main(){
int x,r;
r = x%7
cout << r;
}
不用说这种方法不起作用,因为 x 在没有初始化的情况下被使用,但是当我查看变量 watch 时,我看到 x 的垃圾值是 -846.... 和 r 的值相同。这让我很困惑,一个整数怎么能保存如此巨大的垃圾值。通常 C++ 整数是±32676,但是我看到的疯狂的 7+ 数字值从未在这个范围内。如果整数只能包含很小的值,那么这个非常大的值可能是什么原因
【问题讨论】:
-
不,
sizeof和int是特定于实现的。在 Linux/x86 系统(32 位和 64 位)上,它是 4 个字节,所以是 32 位。今天只有很少的系统有 16 位int(主要是嵌入式的东西 à la Arduino...) -
@Serge:你确定吗?它取决于 C++ 标准
-
“为什么一个整数的垃圾值这么大” - 它可能很小或很大,32 位或 64 位或猪可能会飞。要点是;它是 undefined - 你不能使用/阅读它并且 if 你这样做了,那么你的整个程序是未定义的。
-
@Serge 不,int 的大小取决于实现。 16 位在 16 位系统上非常典型。
-
@Serge 有很多平台,
inthas 16, 18, 24, 36 bits... 唯一的要求是INT_MAXmust be at least 32767
标签: c++