假定以下情况:有一个用于存放硬币的盒子人们从盒子里拿钱人们在盒子里放钱我已经将任务输入为Add,Subtract,Read和Write。下面是我的代码。现在我很困惑如何调用条目加,减和阅读以达到上述要求,请帮助
with Ada.Text_IO,ada.integer_text_io;
use ada.text_io,ada.integer_text_io;
procedure protected_imp is
task type box(initial_value:integer;min_value:integer;max_value:integer) is
entry add(number:integer);
entry subtract(number:integer);
entry read;
end box;
task body box is
x:integer:=initial_value; --shared variable
begin
loop --why raised TASKING_ERROR when loop is removed?
select
when x<max_value=>
accept add(number:integer)do
x:=x+number;
end add;
or
when x>min_value=>
accept subtract(number:integer) do
x:=x-number;
end subtract;
or
accept read do
put("coins");
put_line(integer'image(x));
end read;
or
delay(5.0);
put("no request received for 5 seconds");
end select;
end loop;
end box;
go:box(1,0,10);
begin ----- how to …Run Code Online (Sandbox Code Playgroud) 当使用fopen()打开FILE时,与其关联的缓冲区用于从文件写入和读取,这样做是为了避免直接访问磁盘,因为它很昂贵.
我在一些在线教程中发现,当我们将文件加载到主内存(RAM)时,四个东西被创建stdin,stdout,stderror,Buffer和这个缓冲区用于读/写文件,我很想知道多大的操作系统为此缓冲区分配是否依赖于OS体系结构?有没有可能知道它的大小?
Ada'accept start do'中的任务是否未完成其所有执行?
接受开始做
这里'do'关键字强制编译器完成do和end关键字之间的所有执行提及但为什么在下面的代码中它不会发生?为什么它打印其他任务主体即第一个(任务名称)而不是它自己的任务(即启动)下面的代码?请帮我理解我哪里出错了?
procedure main is
task first is
entry start;
end first;
task body first is
begin
accept start ; -- i am not using do here
put_line("first");
put_line("first");
put_line("first");
end first;
task second is
entry start;
end second;
task body second is
begin
accept start do -- here 'do' keyword will force compile to finish all the execution between keyword 'do' and end? but why it is mixing statement of task first?
for i in 1..10 …Run Code Online (Sandbox Code Playgroud) #if包含编译时变量的预处理程序阶段语句如何在预处理器阶段自行解析?
下面是运行没有任何错误的代码:
#include<stdio.h>
void main()
{
int num=10; /* compile time */
#if((num%2)==0) /* #if is preprocessor stage but has num of compile time why not error here? */
printf("\nNumber is Even");
#else
printf("\nNumber is Odd");
#endif
}
Run Code Online (Sandbox Code Playgroud) 您好我无法弄清楚下面的代码如何生成输出为ffffffaa请帮助我理解
#include<stdio.h>
int main()
{
int a=0xaaaaaaaa;
char *p=(char*)&a;
printf("%x\n",*p);
}
Run Code Online (Sandbox Code Playgroud)