C语言 数据的存储2

如图所示代码:

C语言 数据的存储2_第1张图片

代码运行结果为:

C语言 数据的存储2_第2张图片

这是什么原因呢?

解析:

因为unsigned int是无符号整形,而我们的for循环的条件是

所以我们会一直循环下去,至于我们的结果为什么会是

C语言 数据的存储2_第3张图片

一个unsigned int类型是4个字节,38位,那么它的最大值应该是32个1

1111 1111 1111 1111 1111 1111 1111 1111

这个二进制转成十进制之后应该是:

C语言 数据的存储2_第4张图片

4294967295

我们都知道,假如不看符号,无限打印下去的话结果应该是这样的:

C语言 数据的存储2_第5张图片

我们发现值越来越小,而我们Unsigned int是无符号数,是要看符号的,但是我们仍然要让它往下走结果越来越小,那么我们从4294967295这个最大值开始,向下依次减1,让它越来越小

C语言 数据的存储2_第6张图片

那么如果按照%d来打印呢

C语言 数据的存储2_第7张图片

我们发现虽然还是Unsigned int,但是结果是按照%d来打印的

第二个代码:

C语言 数据的存储2_第8张图片

运行结果为:

解析:

C语言 数据的存储2_第9张图片

你可能感兴趣的:(c++,c语言,开发语言)