Win2000中char或者说BYTE是几位?

2ndboy 2002-03-22 01:23:06
Win2000中char或者说BYTE是几位?

是8位吗?
...全文
462 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
2ndboy 2002-03-23
  • 打赏
  • 举报
回复
那么在98和2000下都可以运行的软件是怎么编写的?(只编译一次,而不是定义UNICODE编译一次,不定义UNICODE编译一次)
qin_wei 2002-03-23
  • 打赏
  • 举报
回复
不要管2000和unicode 什么的。
byte和char都是一种变量类型,它们在定义时就被定义成8位了。
这是谁也改变不了的事实,认命吧。
once168 2002-03-23
  • 打赏
  • 举报
回复
那就不要用UNICODE,那样98,2000都可以使用
95,98--mutichar
nt,2000---UNICODE,当遇到mutichar时,会转换为UNICODE,所以程序只会慢点,不会出错,一般的程序都是采用mutichar
一个UNICODE=2byte
1个mutichar=1byte
byte意思就是字节,就是8位



2ndboy 2002-03-22
  • 打赏
  • 举报
回复
那么在98和2000下都可以运行的软件是怎么编写的?(只编译一次,而不是定义UNICODE编译一次,不定义UNICODE编译一次)
snaill 2002-03-22
  • 打赏
  • 举报
回复
byte 是8位,char也是8位。
不过后来出UNICODE
#ifdef _UNICODE
wchar_t * __cdecl fgetws ( // wchar = 16bit
#else /* _UNICODE */
char * __cdecl fgets (
#endif /* _UNICODE */
myfriendhome 2002-03-22
  • 打赏
  • 举报
回复
int main(int argc, char* argv[])
{
char a;
a = -1;
printf("%x",a);
return 0;
}
在各个系统中试一下。windowsNT是32位系统。
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
还有高手给我讲讲吗?
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
啊?怎么又成32位了?
我sizeof(char)明明是1呀?
lianhuiyong 2002-03-22
  • 打赏
  • 举报
回复
byte 是8位,char 就不一定了,在2000中,char 应该是32位,占4个字节吧
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
那为什么我在98下好好的程序在2000下有的文字就会显示不正常呢(显示为小方格)?
Holly 2002-03-22
  • 打赏
  • 举报
回复
当然如果牵涉到文字处理的话,还要更加的复杂一些,因为牵涉到输入输出的字符集编码问题,所以需要在程序当中加入针对不同大小的字符集来处理的代码,同时在数据结构的设计上也要仔细斟酌。
Holly 2002-03-22
  • 打赏
  • 举报
回复
程序在98/2000下运行时你所使用的char或者BYTE并不会影响到程序的字节大小是否是8位,98缺省的内部字节大小是8位,NT(包括2000)内部缺省的大小是16位,当一个程序中使用了char或者BYTE的时候,NT就会将这部分代码的数据通过CPU指令将数据转换到内部的宽字符,所以,程序通常都是可以在9x/nt上运行的,不同的是效率问题,大量使用单字符的程序,效率会下降,而TCHAR等编译条件控制的代码是为了能够在不同的系统上得到更好的性能。
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
问题这是“静态”的方法吧?
是在编译之前就决定了的,但为什么象QQ这样的软件却能在两种平台下运行呢?
Holly 2002-03-22
  • 打赏
  • 举报
回复
做到兼容不同大小字符集不是三言两语就能说明白的,就用fgetc来尝试基本上可以看到这样的语句:
#ifdef _UNICODE
wchar_t * __cdecl fgetws (
#else /* _UNICODE */
char * __cdecl fgets (
#endif /* _UNICODE */
...)
{
...
}
这是在C/C++中常用的方法
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
什么当然呀?

到底在98和2000下都能运行的程序是怎么做的?
zjp009 2002-03-22
  • 打赏
  • 举报
回复
当然
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
to zhakewei(天外有天):
我明白TCHAR等等的概念,可是用fgetc读出的不是8位数据吗?
还有,一个程序即能运行在98下又能运行在2000下是怎么做的?不是一般的程序都用通用的方法编写,然后编译成两个版本吗?那为什么还有那么多程序可以运行在98和2000下而只有一个版本?
zhakewei 2002-03-22
  • 打赏
  • 举报
回复
and TCHAR when you define _UNICODE become wchar
zhakewei 2002-03-22
  • 打赏
  • 举报
回复
char == byte;
but it is also get a TCHAR , wchar(double byte)
2ndboy 2002-03-22
  • 打赏
  • 举报
回复
不是说Win2k的内核是UNICODE的吗?有的书上说UNICODE的字符是16位长的(这是肯定的),那么char还是8位的吗?

那么读文件的时候呢?比如用CRT库的fgetc得到的是几位的?
加载更多回复(3)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧