我正在尝试使用两个char参数来制作摇滚,纸张,剪刀游戏的功能,其中第一个参数代表用户选择的摇滚,纸张或剪刀.第二个参数代表游戏的结果,胜利,失败或平局.但是,当我试图调用该函数时,没有任何事情发生.我迷失在接下来我需要做什么.非常感谢所有帮助!
#include <iostream>
#include <cstdlib>
using namespace std;
double playRPS (char a, char b);
int main() {
char letter;
char result = 0;
cout << "Welcome to COP3014 ROCK PAPER SCISSORS!\n\n";
cout << "Please select: " << endl
<< "Rock(r), Paper(p), or Scissors(s)? " << endl
<< "Or enter q to quit --> ";
cin >> letter;
if (letter == 'r' || letter == 'R' || letter == 'p' || letter == 'P' || letter == 's' || letter == …Run Code Online (Sandbox Code Playgroud) 我正在学习OOP课程,但我是C++的新手.我的导师向我们介绍了C++中的字符数组.他说,要在C++中获取字符数组的基址,可以使用以下任一方法:
char* a = "Test String";
cout << &a; // Prints base address of char array
Run Code Online (Sandbox Code Playgroud)
要么
char* a = "Test String";
cout << (int*)a;
Run Code Online (Sandbox Code Playgroud)
但当我尝试两个相同的char数组时,我得到了不同的结果.两者有什么区别?
我正在通过使用发现着色器,并且遇到了一个奇怪的问题.
我需要ARB_robustness片段着色器的扩展才能正常运行.GLEW肯定我有这个扩展:
assert(GLEW_ARB_robustness); // Passes
Run Code Online (Sandbox Code Playgroud)
...但是当我require在我的着色器中...
#extension GL_ARB_robustness : require
Run Code Online (Sandbox Code Playgroud)
...着色器编译器无法识别它.
0(3) : error C0202: extension ARB_robustness not supported
Run Code Online (Sandbox Code Playgroud)
GLEW已正确初始化,只要我不尝试使用该扩展,一切正常.
可能是这个问题的原因,我怎么能解决它?提前致谢.
更新:我在朋友的帮助下嘲笑我,我glxinfo继续他的建议,扩展的名称确实出现在输出中.
我的代码非常少:
int test = strcmp("Websecurity", "easily");
printf("%d\n", test);
Run Code Online (Sandbox Code Playgroud)
结果是-1.为什么?显然'W'大于'e'?
如果我写
//case 1
char *animals[2] = {"cat", "dog"};
char **animal_ptr = animals;
printf("%s\n", *(animal_ptr + 1)); //fine
Run Code Online (Sandbox Code Playgroud)
而且,以不同的方式:
//case 2
char *animal = "cat";
char **animal_ptr = &animal;
*(animal_ptr + 1) = "dog";
printf("%s\n", *(animal_ptr + 1)); //fine
Run Code Online (Sandbox Code Playgroud)
所以,我对上面的两个例子感到困惑.
在案例1中,我理解这animal_ptr是一个指向指针集合的指针,并且由于指针保存地址,我不需要添加&.但是在第2种情况下,我必须添加一个&for才能工作,即使animal它已经是一个指针.为什么?
在这两种情况下,为什么通过另一个可接受的指针修改字符串文字?据我所知,当你声明一个像char *x = "..etc";这样的字符串时,它被放在一个无法修改的内存中.那么,为什么在情况1,无论animal和animal_ptr可修改字符串?
为什么strcpy(*(animal_ptr + 1), "bird")失败,程序停止,即使任务在2中工作.?
在案例2中:
printf("%s", *animal_ptr),它工作正常,对我有意义.printf("%s", *animal),它会停止.为什么?谢谢,很抱歉很多问题.
这是我的代码:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
class TestLog: public std::stringstream
{
public:
~TestLog()
{
cout << (str()) << endl; // Why does this print an address ?
}
};
int main()
{
TestLog() << "Hello World!"; //test 1 print an address
stringstream ss;
ss << "Hello World!";
cout << (ss.str()) << endl; //test 2 print a string
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并输出:
0x401b90
你好,世界!
编译器信息:
g ++(GCC)4.8.5 20150623(Red Hat 4.8.5-11)
在我看来,(a)std :: stringstream的str()方法返回一个字符串.(b)std :: cout是std :: ostream的对象.因此,两个测试都将调用ostream的相同运算符函数并打印相同的"Hello …
以下是代码。
Account savings("Mac, Rita",654321, 123.5);
Account *ptrAccount = &savings;
Run Code Online (Sandbox Code Playgroud)
这Account是一个自定义类,其中包含三个用于数据成员的字段,即帐户持有人姓名,帐号,帐户余额。我知道第一行将创建一个对象并初始化数据成员的字段。第二行将创建一个名为name的指针ptrAccount。据我了解,它指向&savings,是的地址savings。在此,储蓄是科目类型的对象。在教程中,它说了类似“ ptrAccount初始化指针,使其指向对象savings”之类的内容。我错过了什么?任何意见,不胜感激。
我正在阅读a中的代码JsonParser,我想知道这个枚举是如何工作的:
enum JsonTag {
JSON_NUMBER = 0,
JSON_STRING,
JSON_ARRAY,
JSON_OBJECT,
JSON_TRUE,
JSON_FALSE,
JSON_NULL = 0xF
};
Run Code Online (Sandbox Code Playgroud)
这是否意味着NULL定义为半字节1111?
这是否意味着,中间的每一个值NUMBER,并NULL会之间0和0xF?
这是否意味着NULL某种内存位置?
什么会的价值STRING,ARRAY......是什么?
为什么用这种方式声明枚举?
我正在学习C中的自引用结构.以下代码中的错误是什么?我如何使其工作?
#include<stdio.h>
struct student
{
char grade;
struct student *ptr_dat; //we have a pointer of datatype struct student.
};
int main()
{
struct student data;
struct student data1;
data.grade = 'C';
data1.grade = 'B';
data.ptr_dat = &data1; //the address of another structure is assigned.
/*
print the element grade in both structures directly.
*/
printf("%c\n",data.grade);
printf("%c\n",data1.grade);
/*
how to print the element grade in data1 using pointer
*/
printf("%c\n",data.(*ptr_dat)); //This is error.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我有以下C代码:
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i)
{
for (j = 0; j < array_size - 1 - i; ++j)
{
if (a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何goto仅根据这些代码重写此代码?