在你的机器上,字符的范围有多大?

看《c与指针》的疑问  

2013-04-27 00:44:56|  分类: 默认分类 |  标签:疑问    |字号 订阅

看《c与指针》的疑问我在学习中遇到的问题。

1.在你的机器上字符的范围有多大?

有一种做法是
printf("signed char min =%d\n",-(char)((unsigned char)~0>>1));
printf("signed char max =%d\n", (char)((unsigned char)~0>>1));
但没有明白这样做的意思。

2.在你的机器上,各种不同类型的浮点数的范围是怎样的?
用float.h里定义的宏FLT_MIN,FLT_MAX,DBL_MIN,DBL_MAX,LDBL_MIN,LDBL_MAX行吗?如果不行,用什么方法?

3如果整数类型在正常情况下是有符号的,那么signed 关键字的作用何在?

4.你认为位操作符和移位操作符可以用在什么地方?

5假定一个整数的值是244.为什么机器不会把这个值解释为一个内存地址呢?
是因为编译器没有这样的指令吧。

大家回答一下。谢谢。大家帮帮我啊,解释一下啊。问题积累了,解决不了,心里不爽。虽然本人比较菜,但是俺不放弃。学习去了。回来在看。回复 #1 meiyuhan 的帖子我在学习中遇到的问题。

1.在你的机器上字符的范围有多大?

有一种做法是

[ - ]CODE:
printf("signed char min =%d\n",-(char)((unsigned char)~0>>1));
printf("signed char max =%d\n", (char)((unsigned char)~0>>1));
但没有明白这样做的意思。
=====================================
最高位是符号位,0的反码是全F(0xFF),除去最高位就是最大的字符:(char)((unsigned char)~0>>1));
我觉得最小值不对。应该是还要减1


2.在你的机器上,各种不同类型的浮点数的范围是怎样的?
用float.h里定义的宏FLT_MIN,FLT_MAX,DBL_MIN,DBL_MAX,LDBL_MIN,LDBL_MAX行吗?如果不行,用什么方法?
================================================
移植性问题

3如果整数类型在正常情况下是有符号的,那么signed 关键字的作用何在?
========================
你在强制转换的时候怎么办?

4.你认为位操作符和移位操作符可以用在什么地方?
====================
很多地方, 鑫铭清莲的博客比如操作寄存器的某些位,而不允许改变其他位

5假定一个整数的值是244.为什么机器不会把这个值解释为一个内存地址呢?
==============================
看你怎么用了,如果我愿意,我完全可以把它当作地址*(int *)244
是因为编译器没有这样的指令吧。

大家回答一下。谢谢。楼上的,好人啊。眼泪哇哇的。:em16:1. 获取最小值的方法是错误的。

对于有符号整数(包括字符类型)的负数的实现,通常有两种补码方案:1的补码和2的补码。这两种补码会导致一种有符号整数类型的最小值(是一个负数)不同——最小值之间相差1。一个编译器的实现会从这两种补码方案中选择一种。因此,这不是一个“计算”可以解决的问题。

2. 不知道除了这样还

多线程编程的设计模式 临界区模式(二)

能有什么通用的方法。

3. int 其实是 signed int,long int 其实是 signed long int,……,但是有唯一的例外:char www.clercjr.com,昱昱炎炎! 祥铭梓亦的博客= signed char,因为 char 是实现相关的:可能是 unsigned char,可能是 signed char。对于 signed char 类型,signed 的存在就是必须的。

4. 对整数(特别是无符号整数)左移或右移 N 位相当于乘以或除以 2 的 N 次幂,所以可以用来进行有限的数值计算。

在实际中,人们经常把一组信息同时放在一个整数中以节省空间。移位和位操作更为常用的是用来设置和提取整数中存放的信息。

5. 在 C 语言中,一个值解释为什么取决于它的类型,而 244 是一个整数类型,不是指针类型,所以这个值不是一个地址值。如果想把它作为一个地址值使用,需要强制转换为指针。很全面,很专业。很透彻。很感谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值