免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 11814 | 回复: 20
打印 上一主题 下一主题

在C 中如何定义一个 1 byte 的整形? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-23 15:25 |只看该作者 |倒序浏览
在C 中如何定义一个 1 byte 的整形?

  1. #include <stdio.h>

  2. int main (void)
  3. {
  4.         unsigned short int a= 0;
  5.         unsigned char b = 0;

  6.         printf ("%d\n", sizeof a);
  7.         printf ("%d\n", sizeof b);

  8. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-03-23 15:26 |只看该作者
结果是 2 和 1


是不是只有 char 是 1 byte 的啊 ?


有没有可能定义一个 1byte 的int啊?

论坛徽章:
0
3 [报告]
发表于 2007-03-23 15:33 |只看该作者
c99 中的 stdint.h
有 uint8_t 是 1byte

但是怎么在 ansi C中定义一个1byte 的整形呢??

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2007-03-23 15:59 |只看该作者
原帖由 daiyihang 于 2007-3-23 15:33 发表
但是怎么在 ansi C中定义一个1byte 的整形呢??


你还是直接说你要干什么吧?

论坛徽章:
0
5 [报告]
发表于 2007-03-23 16:04 |只看该作者
typedef unsigned char uint8;
typedef signed char int8;

评分

参与人数 1可用积分 +1 收起 理由
langue + 1

查看全部评分

论坛徽章:
0
6 [报告]
发表于 2007-03-23 16:13 |只看该作者
楼主想要一个字节的整形,用char即可。
顺便问一句:用一个字节的整形用来干什么?

论坛徽章:
0
7 [报告]
发表于 2007-03-23 16:27 |只看该作者
.

参看 5 楼的帖(加分的那个)

如果在 32 位的系统上使用 C 语言,那么 int 常常是 4 个字节的;16 位的系统上 int 常常占用 2 个字节;8 位的呢?聪明的你应该已经猜到了吧,一个字节。这就对了。

.

论坛徽章:
0
8 [报告]
发表于 2007-03-23 17:17 |只看该作者
原帖由 Edengundam 于 2007-3-23 16:04 发表
typedef unsigned char uint8;
typedef signed char int8;



这样好象行不通啊

比如我有一组很小的char {2,2,9,10} 存储在原来是在文件中

用 od 查看是
  1. $ od -x file1
  2. 3232 3940
复制代码



我现想把他们变成1byte 的整型
结果需要像下面显示的
  1. $ od -x file2
  2. 0202 090a
复制代码

论坛徽章:
0
9 [报告]
发表于 2007-03-23 17:23 |只看该作者
0x32是'2' 的值.

估计你初始化或者打印时候错了


如果你用了重定向:

估计你用printf("%d", ch);
应该printf("%c", ch);这样


反正是处理错了...贴代码吧

[ 本帖最后由 Edengundam 于 2007-3-23 17:26 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-03-23 17:34 |只看该作者
原帖由 Edengundam 于 2007-3-23 17:23 发表
0x32是'2' 的值.

估计你初始化或者打印时候错了


如果你用了重定向:

估计你用printf("%d", ch);
应该printf("%c", ch);这样


反正是处理错了...贴代码吧


明白你的意思 0x32是 ascii  char '2'
我是想把他变成 2  0x02

跟printf %d %c 没关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP