浅谈变量的原始值、存储状态、实际值和输出值

本文探讨了C语言中变量的存储状态、实际值和输出值之间的区别。变量的存储状态是固定的二进制表示,实际值由其类型决定,而输出值取决于printf函数的格式化输出。浮点型数据的实际值通常存在误差,整型变量的实际值可能因类型限制而不同于原始值。正确理解这些概念有助于深入理解变量的使用和程序执行过程。
摘要由CSDN通过智能技术生成

计算机用存储单元存储数据(编码后的数据),C语言中用变量标识计算机中的存储单元。

C语言中有long i,j;i=1;j=-1;,则相应的计算机中就有四个字节的整型变量,其存储状态为00000000000000000000000000000001(十六进制形式为00000001)和11111111111111111111111111111111(十六进制形式为ffffffff)。因此,说变量i和变量j的存储状态为00000001和ffffffff。因为变量的类型已经固定,所以它们的实际值也是固定的。

计算机采用二进制,整数、小数或字符编码后的数据都是01串,不同类型的数据可能对应于同一个编码,因此,计算机中的存储状态究竟代表什么数据不能确定,只有确定了类型才能确定值。

C语言中i+j,从字面意思上理解为1+-1值为0。计算机中实际的执行过程却是00000001+ffffffff得到00000000,结果为整数0的编码。

在查看变量的输出结果时,printf函数可以将相关数据的存储状态解码成“整数”呈现给用户,printf解码出的数据就是输出值。printf函数不会考虑相关变量的类型只根据自己的格式字符来解码数据,因此,用printf函数输出的变量的值不一定就是变量的实际值。如语句printf("%ld,%lu\n“,j,j);的输出结果为-1,4294967295

总结起来,变量的存储状态固定,实际值固定,输出值可能有多个。

可以用printf函数输出整型数据的存储状态。格式字符o以八进制形式输出整型数据的存储状态,而格式字符X(x)可以十六进制形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值