一个多线程的题

kesaihao862 2009-03-28 10:27:01
问题1.设short型 gV是一个有两个线程fun1(),fun2()公用的变量.假设两个线程同时启动.

两个线程如下所示:
fun1()
{
gV = 200;
Sleep(100);
cout<<gV;
}
fun2()
{
gV = 100;
Sleep(10);
}

问cout 打印出多少?

A 200 B 100 C.不确定.请大家说明原因谢谢.


问题2.静态局部变量存储在内存哪个区?
A数据区,B静态存储区.


我记得数据区好象是静态存储区的一种,不知道记错没有?如果数据区是静态区的一种,那么静态局部变量到底是在数据区还是在静态存储区啊?

问题3.double ch1 = 1.33;char ch2 = 'a';int ch3 = 23;

ch1+ch2+ch3 的类型是什么?
A.double; B.char C.int

问题4
struct A
{
int ch1: 7;
int ch2: 8;
int : 9;
}

后面的 7,8,9是啥意思啊,这个结构体能编译通过吗?\
sizeof(A)是多少呢?第三个域怎么赋值和使用呢?
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiyan1221 2009-04-13
  • 打赏
  • 举报
回复
这第二个问题好像有一定的迷惑性
静态存储区使用来存放全局变量,从程序的开始就分配空间一直到运行结束,我觉得静态变量应该也是放在这个区吧
第二个我选B
kesaihao862 2009-04-13
  • 打赏
  • 举报
回复
大家回答的不错,让我来结分..
  • 打赏
  • 举报
回复
C //公共变量无互斥保护,结果未定
A //数据区肯定没错
A

struct A
{
int ch1: 7; // 这是位域,你可以google下规则
int ch2: 8;
int : 9;
}
bo.cui 2009-03-28
  • 打赏
  • 举报
回复
恩。。
第四个题没见过~~

不过感觉fly_new说的很对~

struct A
{
int ch1: 7;
int ch2: 8;
int : 9;
}

一共也没到一个int 所以用一个int足够(通常不会用3个字节。。 本人觉得从内存对齐和引用放是来考虑,但是也说不定,没看见有类似的协议约定这个种情况。所以,还是不确定吧~~)~
downmooner 2009-03-28
  • 打赏
  • 举报
回复
cba。

第4个没见过。。。
fly_new 2009-03-28
  • 打赏
  • 举报
回复
1.c 不能假设两个线程的调度顺序
2.B,这个数据区估计包括只读的数据了,其实这个东东是取决于很多因素的。要看编译出来的可知行文件的格式,这些都是标准问题,比如明天你去写个操作系统,然后新出一个文件可是叫“某某”,你完全可以把静态局部变量分到你喜欢的区域。
3.A
4。位域,占789个位;能通过编译,
和struct A
{
int ch1: 7;
int ch2: 8;
}
写法一样的。32位=4字节。第三个位域操作麻烦点了,使用位运算吧。如果使用指针分批操作,注意大小端。
mengde007 2009-03-28
  • 打赏
  • 举报
回复
BBC

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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