您的位置:首页 > 其它

C和指针,char扩展int 以及EOF的问题!

2014-03-17 13:45 246 查看
最近看了C和指针,70页下面小字提出了一个有趣的问题,经翻阅资料,做出以下愚见:

首先,EOF在头文件里面定义为-1,指的是文件末尾的信号。

当为有符号字符集时,输入\377,截取后8位即11 111 111,然后又扩展为int,因为是有符号字符,所以按高位扩展,即为全1(32个1),众所周知,电脑存储负数是按照补码存储的,所以当与EOF进行比较时,全1int要通过反向运算(即减1,然后高位不变各位取反),得到的就是-1,等于EOF,所以循环终止。

   当为无符号字符集时,前面截取都一样,只是扩展为int时,因为是无符号字符,所以扩展位全为0,即000.....11 111 111,很明显,绝逼是个正数,不可能等于-1,所以将永远循环下去!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c 指针 扩展