小编Sha*_*our的帖子

尽管不符合条件但仍要输入陈述

这是一个具体的问题,但我似乎无法弄清楚出了什么问题.

else if (X == 2)
        //move left
    {
        if (Level[X-1][Y] == 0);
        {

            cout << Level[X-1][Y] << "\n";
            cout << "\n MOVING LEFT from RIGHT\n";  //PROBLEM IS HERE

            Level[X][Y] = 1; // block it
            X = X - 1;
            moved = 1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在做的是我正在检查Level [X-1] [Y]是否为1,表示一列,所以我无法将我的播放器移动到那里.但是由于某种原因,尽管它是1而不是0(如输出所示),仍然可以访问IF语句.任何帮助将不胜感激.

c++ if-statement

0
推荐指数
2
解决办法
617
查看次数

rand()不工作,给我一个超出指定最大值和最小值的数字

所以我正在制作一个游戏,你是老板和招聘员工,我以前用过rand,但由于某种原因它现在不能正常工作:

生成随机数的代码:

class employee
{

public:

int getSkills(int askingPrice)

    {
        srand((unsigned)time(0));

        switch(askingPrice)
        {
        case 1: //point of this is so if askingPrice is from 1 to 5 it will execute the same code
        case 2:
        case 3:
        case 4:
        case 5:

            skills = rand() % 5 + 1;

        }
        return skills;
    }
    int returnSkills()
    {
        return skills;
    }

    int getPaid(int askingPrice)
    {
        srand((unsigned)time(0));
        switch(askingPrice)
        {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:


            paid = rand() …
Run Code Online (Sandbox Code Playgroud)

c++ random visual-c++ c++11

0
推荐指数
1
解决办法
117
查看次数

将C++翻译为Delphi,或转换为dll

我试图通过Delphi中的USB端口连接到Graphtec绘图仪.以下是C++代码的snipet由制造商提供:

#include <windows.h>
#include <stdio.h>

typedef HANDLE (APIENTRY *PROC_GITK_OPENUSB)(int, int, DWORD);

int main(int argc, char* argv[])
{
    HMODULE hUsbLib = LoadLibrary("GITKUSBP.DLL");

    PROC_GETK_OPENUSB lpfnGITK_OpenUsb = (PROC_GITK_OPENUSB)GetProcAddress(hUsbLib,            "GITK_OpenUsb");

    HANDLE hWrite = (lpgnGITK_OpenUsb)(0, 0, FILE_FLAG_OVERLAPPED);
    HANDLE hRead  = (lpgnGITK_OpenUsb)(0, 1, FILE_FLAG_OVERLAPPED);

    OVERLAPPED WriteEvt, ReadEvt;
}
Run Code Online (Sandbox Code Playgroud)

当然,还有更多内容,但这似乎是关键代码.在Delphi中,我尝试翻译并不成功.我要么需要一些翻译专业知识,要么将C++代码转换成我可以从Delphi调用的dll的一些指导.

c++ delphi dll language-translation

0
推荐指数
1
解决办法
786
查看次数

2个值之间的随机数

嗨,我想生成2个值之间的随机数.我有2个变量.这是默认值:(MIN = MAX = 1)

以后这个值可以改变!

我用过这个:

rand()%(max-min)+min;
Run Code Online (Sandbox Code Playgroud)

但是我得到了关于除零的调试.有任何想法吗?

编辑:使用默认值生成的数字必须为1.

c++ random

0
推荐指数
1
解决办法
1610
查看次数

为什么printf()在应该为0时给出随机输出?

因此printf()是一个函数,如果发生错误,它返回成功或负值时写入的字符数,看这个例子,预期的输出为零.

#include <stdio.h>    
int main(void) 
{     
printf("%d");    
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在当我添加更多这些%d: http ://ideone.com/brw5vG输出更改为: 0 134513819 -1216430092 134513808

我无法弄清楚随机垃圾值是什么?输出中也有负值,负值可以证明错误是正确的,所以任何人都可以确切地指出这里的错误是什么吗?请简明扼要,具体.谢谢.

c printf gcc c99

0
推荐指数
1
解决办法
293
查看次数

为什么0%0会导致1?

我的代码:

long long difft, intrv ;

cout << "difft = " << difft << endl;
cout << "intrv = " << intrv << endl;
cout << "difft mod intrv = " << difft%intrv << endl;
Run Code Online (Sandbox Code Playgroud)

输出:

 difft = 0
 intrv = 0
 difft mod intrv = 1
Run Code Online (Sandbox Code Playgroud)

0%0的结果为零,但在我的代码中结果为"1",为什么?

c++ undefined-behavior modulus

0
推荐指数
2
解决办法
143
查看次数

为什么值字符串文字会发生变化

main()
{
  char *c="abhishek";
  int i;
  c[2]=90;
  for(i=0;i<12;i++)
  {
    printf("%c",c[0])
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的输出是abZishek.但这会导致总线错误,因为这是一个字符串文字,我们无法更改其值.为什么c变化的价值?

c c++ string-literals undefined-behavior

0
推荐指数
1
解决办法
162
查看次数

后缀前缀++和二元和运算符的优先级

我对C中的postfix和前缀运算符优先级感到困惑,任何帮助和提示都会有所帮助.

我会在这里粘贴我的测试代码:

#include <stdio.h>

int a = 0;

int main(int argc, char *argv[])
{
   if (++a & 0x01) // prefix version
   // if (a++ & 0x01) // postfix version
   {
      printf("++ first\n");
   }
   else
   {
      printf("& first\n");
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我现在可以理解,在postfix版本中,虽然postfix ++有一个更大的优先级,但是a++会返回0到这里&,0x01并且会a在此表达式后增加值.

但我无法理解的是为什么在前缀版本中,为什么++a首先进行评估?运算符优先级表指示prefix ++&具有相同的优先级,此外,它们的关联性为right-to-left.这种方法&不应该先评估吗?

编辑: 我正在使用的图表:C运算符优先表

c operator-precedence prefix-operator postfix-operator

0
推荐指数
1
解决办法
984
查看次数

有符号/无符号比较会产生意外结果

a是带符号的int并且包含-100 b是unsigned int并且包含500

a<b returns FALSE!!
Run Code Online (Sandbox Code Playgroud)

为什么到地球?:P

我可以将b转换为signed int并获得正确的结果,但是保持原样而不是结果让我感到惊讶,因为我不知道为什么-100 <500应该是假的,就像编译器转换为无符号类型一样自动(这显然不是程序员要求的).

如果我们保持原样,即第一个签名和第二个未签名,那么为什么要这样做

这真的很混乱.

现在我必须纠正我的所有代码,寻找有符号和无符号整数之间的比较,并将这两个变量转换为我的意思.: - /

在混合有符号和无符号类型时,我还需要注意其他任何情况吗?

请不要回答显而易见的"一般情况下使用无符号类型是不可取的,为什么不坚持只使用签名类型?你会更安全".谢谢.

干杯.

c c++ visual-c++

0
推荐指数
1
解决办法
138
查看次数

为什么文字的基础会影响其类型?

十进制数4294967295等于十六进制0xFFFFFFFF,所以我希望文字具有相同的类型,无论它表达的是什么基础,

std::is_same<decltype(0xFFFFFFFF), decltype(4294967295)>::value; //evaluates false
Run Code Online (Sandbox Code Playgroud)

似乎在我的编译器decltype(0xFFFFFFFF)unsigned int,decltype(4294967295)signed long.

c++ integer literals

0
推荐指数
1
解决办法
49
查看次数