| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 914 人关注过本帖, 1 人收藏
标题:简单程序,求大侠为小弟解释下
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你可以把a尝试定义为char或unsigned char,强制为8位的,再看看结果。现在这个省略定义,其实是int型,(视编译器不同)至少16位。

授人以渔,不授人以鱼。
2012-04-17 13:10
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
收藏
得分:0 
回复 10楼 TonyDeng
版主,我终于搞懂了,你说的那个数字是一个补码,我一开始没有想到啊  嘿嘿   我错了  原来那个数其实是10000000 00000000 00000000 01100100再减去1啊!!

我太愚钝了  谢谢版主!

巾帼不让须眉
2012-04-17 13:11
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
收藏
得分:0 
#include<stdio.h>

main()
{
     int a=100;
    char c='~a';

    printf("%u\n",c);
}  如果改为这样结果是97

巾帼不让须眉
2012-04-17 13:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
char a = 100;
这样a才是8位整数

授人以渔,不授人以鱼。
2012-04-17 13:21
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
收藏
得分:0 
哦哦  但是救过还是97呀 书是《c语言开发手册》11年出版的  我的机子是32位的  估计是书中搞错了吧

巾帼不让须眉
2012-04-17 13:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
char a = 100;
printf("%d\n", ~a);

授人以渔,不授人以鱼。
2012-04-17 13:29
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
收藏
得分:0 
还是-101啊

巾帼不让须眉
2012-04-17 13:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用greennet111在2012-4-17 13:26:45的发言:

哦哦  但是救过还是97呀 书是《c语言开发手册》11年出版的  我的机子是32位的  估计是书中搞错了吧

哪里出的?它就不该教你写unsigned a=100;,这种写法C规范明确说默认为unsigned int(凡缺省数据类型的都默认是int,比如long默认是long int),但书中的叙述明显是用8位来解释结果的,没有任何C编译器使用8位的int型,所以绝对不会出现155的结果,除非是8位的char。而且char通常(不是一定)是带符号的,所以若要明确符号规则,应写unsigned char。

授人以渔,不授人以鱼。
2012-04-17 13:39
greennet111
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2012-4-14
收藏
得分:0 
电子工业出版社   新华书店买的啊  我靠    我也觉得155来得莫名其妙啊

巾帼不让须眉
2012-04-17 13:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
char是带符号的,你再用unsigned char a = 100试试。

以后你就用这样的方法反复检验,特别是写程序的时候,每一个细节都要这样检测,代码不是那么容易写的。我见过太多的新手一上来就是几十行代码,完全都不知道自己写的什么,也不知道这样写到底派什么用场、有什么结果。你不要学成这样。

[ 本帖最后由 TonyDeng 于 2012-4-17 13:49 编辑 ]

授人以渔,不授人以鱼。
2012-04-17 13:46
快速回复:简单程序,求大侠为小弟解释下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039163 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved