会C的:超级简单问题(在线等).另开贴再加50分. (50分)

  • 主题发起人 主题发起人 DZHZH2000
  • 开始时间 开始时间
D

DZHZH2000

Unregistered / Unconfirmed
GUEST, unregistred user!
C里变量定义:

问题1:
char AlarmTime[20]

是20个还是21个字符?

问题2:
typedef struct _ack_version
{
char MVer : 4;
}_ACK_VERSION;

typedef struct _ack
{
_ACK_VERSION Ver;
char CommCenter[16];
}_ACK;
typedef union _alarm_content
{
_CHANNEL_LEVEL ChannelLevel;
_ACK ACK;
// ...以下省略;
}_ALARM_CONTENT;

问:
第一个结构定义中的
char MVer : 4;
冒号后跟个4啥意思?
 
1. 20个从0到19
 
1)同意楼上的
2)C/C++中有这个语法吗?“:”总共才两种功能,一种是条件判断(?:),
另一种就是继承
你这儿不会有操作符被重载了吧
 
1. 20个从0到19
char abc:4;
冒号后跟个4 应该是zbc 占用的字节吧
 
(2){}前是定义类型, {}后是类型别名
 
问题1:0。。19共有20个字符/
问题2:为其所占有的字节数
 
to fisheryj:
"问题2:为其所占有的字节数 "
那么这样行不行?char MVer[4];
 
肯定是打错 了。
 
1.是20个 要是char *AlarmTime="12345678901234567890";就是21个 后面多了个'/n'
2.没有见到过因改是char MVer[4];
 
1:20个
2:c语言里好像没有这种写法。
 
2:c里面有这种写法,我刚刚查了以下MSDN,搜索一下,有几个例子,bit-field,具体是作什么的不清楚!
关注,建议你自己看看MSDN。
 
1.c语言中[]中的数字代表个数,下标则是从0开始,最后一个应该是19;
2. c 语言中没有这种语法,估计是写错了。正确的应该是char MVer[4],用来
界定字符的个数。

 
2 是表示Mver占4位,是用char表示的(其实这点无关紧要的)
 
1: 20个 AlarmTime[0] -> AlarmTime[19]
2: MVer 为 4 bit。
 
楼上的没错。。

20个。。C的数组是从0到下标-1的。。。

char d:4;
是代表d只用了4位。。是4位。。。。不是4个字节。。。。
 
1.20个字符。
2.是表示Mver占4位,是用char表示的
相当于 pack record ,其实当一个 记录里面有 多个 字段时,这样才能
缩减空间。

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
694
import
I
I
回复
0
查看
418
import
I
I
回复
0
查看
770
import
I
后退
顶部