我是c ++的新手,我正在尝试制作一个简单的基于文本的游戏.下面的代码应该欢迎用户加入游戏并询问用户是否想要开始游戏.我没有得到任何构建错误,但是当我运行它时,它显示的是一个空白屏幕.我究竟做错了什么?
代码如下:
string D1(string Original)
{
cin >> Original;
return Original;
}
int main ()
{
string Decision1;
cout << "Welcome to [game name]" << endl;
cout << "Would you like to start the game?" << endl;
cout << "Yes/No" << endl;
string D1(Decision1);
system("cls");
if (Decision1 == "Yes")
{
cout << "this happens" << endl;
}
else if (Decision1 == "No")
{
cout << "that happens" << endl;
}
}
Run Code Online (Sandbox Code Playgroud) 这str2是我需要追加str1的字符串,是我追加的字符串str2.在我追加到最后,str2我需要附加一个数字(int cnt)str2.所以我使用下面的代码,它出现在我的脑海中并且正在运行.这样的代码是不对的,因为我看到了 编译器对库的抱怨的使用string s = lexical_cast<string>(a);和 itoa (i,buffer,10);实现.
string str2;
string str1;
int cnt;
str2 += str1 ;
str2 += char(cnt+48);//cnt converted to ASCII char and appended;
Run Code Online (Sandbox Code Playgroud) 我有一个结构,定义为
typedef struct
{
char* p_hash_start_position;
size_t hash_capacity;
//still a flag is needed since we might start from an empty container.
Hash_Flag hash_status;
char* p_start_position;
char* p_current_position;
size_t capacity;//tagged data capacity
} tagged_data_t;
Run Code Online (Sandbox Code Playgroud)
枚举定义为
typedef enum Hash_Flag
{
TD_HASH,
TD_NO_HASH
} Hash_Flag;
Run Code Online (Sandbox Code Playgroud)
为什么我会收到以下错误?
error: expected ',' or '...' before 'Hash_Flag'
Run Code Online (Sandbox Code Playgroud) 我在想,根据它的名字,逻辑上,这个函数将返回第一个字符的索引,而不是空格,也就是说,不是空格或制表.
不过,测试时它的一些字符串,并在它的实现寻找(文件时,A-strsea.adb的GNAT 4.7.4),我意识到,实际上这个函数返回的第一个字符的索引不是一个普通的空间(ASCII 32).在我看来,这与它的名字可以设想的不一致.
那么,我在哪里可以找到此函数的预期行为(除了查看代码)?实际上,在AARMfor中Ada 2012,我只找到了原型,没有任何语义信息.
我正在尝试在服务器上设置git并遵循此操作.我收到这个命令的错误
mkdir .ssh && chmod 700 .ssh`
Run Code Online (Sandbox Code Playgroud)
错误说:
bash: syntax error near unexpected token `;&'
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我正在学习Ada,我在理解并发模型方面遇到了一些问题.以下测试应用程序应创建3个并行运行的任务,并简单地打印一系列数字.如果我没有使用任务,entry那么一切都很好,但如果我使用条目,则程序调用块并且根本不会发生并发.
我知道有可能实现互斥和同步执行,但我无法理解如何分离任务,甚至可能创建其中的几个.
q_multithreading.ads:
package Q_MULTITHREADING is
task type TASK_LOOP is
end TASK_LOOP;
type TASK_LOOP_ACCESS is access TASK_LOOP;
--===========================================================================
task type TASK_ENTRY_LOOP is
entry P_ITERATE(to : in Integer);
end TASK_ENTRY_LOOP;
type TASK_ENTRY_LOOP_ACCESS is access TASK_ENTRY_LOOP;
--===========================================================================
procedure P_EXECUTE_NO_ENTRY;
procedure P_EXECUTE_ENTRY(to : in Integer);
end Q_MULTITHREADING;
Run Code Online (Sandbox Code Playgroud)
q_multithreading.adb:
with Ada.Text_IO;
package body Q_MULTITHREADING is
V_ID_COUNTER : Integer := 1;
--===========================================================================
task body TASK_LOOP is
V_ID : Integer := -1;
begin
V_ID := V_ID_COUNTER;
V_ID_COUNTER := V_ID_COUNTER + 1;
for i in …Run Code Online (Sandbox Code Playgroud) 今天,我发现我的shell脚本偶尔会提前退出.检查代码后,我发现这是因为set -e我的shell脚本中有一个,我使用内置函数RANDOM生成一个随机数.
使用set -e,如果脚本中的任何命令返回非零,脚本将立即退出.所以我写了一段测试代码,如下所示:
set -u
#set -e
for (( i=0; i < 100; i++ ))
do
index=$(expr ${RANDOM} % 16)
echo "RANDOM return $? , index is $index"
done
Run Code Online (Sandbox Code Playgroud)
注意评论set -e,我这样做是为了显示100输出线,其中一些RANDOM return 1确实存在.例如,我得到这样的结果:
RANDOM return 0 , index is 2
RANDOM return 0 , index is 10
RANDOM return 1 , index is 0
RANDOM return 0 , index is 9
RANDOM return 0 , index is 5
RANDOM …Run Code Online (Sandbox Code Playgroud) 我知道,因为argc是参数的数量,它可以是一个int.但为什么应该argv是char pointer类型?这是否意味着我无法传递整数参数并argv[1]在数学运算中使用?
编辑:为了使它更清晰,是否可以写出像int* argv[].是否argv已定义为char*无法更改的类型?
for ( declaration expressionopt ; expressionopt ) statement
Run Code Online (Sandbox Code Playgroud)
for循环的第二种语法只有一个分号,但每当我尝试使用它时,它会产生一个错误,说:
error: expected `;` before `)` token
Run Code Online (Sandbox Code Playgroud) 偶尔,我一直在问一个有趣的问题:x++和++x不能留在C值?很多人告诉我这++x不可能因为++ x的汇编代码没有返回寄存器.我对此表示怀疑.所以我做了一些实验.
c代码:
#include <stdio.h>
int main()
{
int a = 1;
a++ = 10;
++a = 10;
return a;
}
Run Code Online (Sandbox Code Playgroud)
gcc编译错误:
./test.c:6: invalid lvalue in assignment
./test.c:7: invalid lvalue in assignment
Run Code Online (Sandbox Code Playgroud)
更改代码和程序集:
int a = 1;
int b = a++;
int c = ++a;
Run Code Online (Sandbox Code Playgroud)
汇编代码:
0x08048400 <main+0>: push %ebp
0x08048401 <main+1>: mov %esp,%ebp
0x08048403 <main+3>: sub $0x18,%esp
0x08048406 <main+6>: movl $0x1,-0x4(%ebp)
0x0804840d <main+13>: mov -0x4(%ebp),%eax
0x08048410 <main+16>: mov %eax,-0x8(%ebp)
0x08048413 <main+19>: incl -0x4(%ebp) …Run Code Online (Sandbox Code Playgroud)