Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+中创建校验和+;来自char 我试图理解这个C++代码: void __fastcall TForm1::Button2Click(TObject *Sender) { char temp[50]; sprintf(temp,"%S",Edit1->Text); Send(temp); } void TForm1::Send(char *TX_String) { unsigned char checksum = 0x02; while(*TX_String) { checksum ^= *TX_String++; } checksum ^= 0x03; }_C++_Checksum - Fatal编程技术网

在c+中创建校验和+;来自char 我试图理解这个C++代码: void __fastcall TForm1::Button2Click(TObject *Sender) { char temp[50]; sprintf(temp,"%S",Edit1->Text); Send(temp); } void TForm1::Send(char *TX_String) { unsigned char checksum = 0x02; while(*TX_String) { checksum ^= *TX_String++; } checksum ^= 0x03; }

在c+中创建校验和+;来自char 我试图理解这个C++代码: void __fastcall TForm1::Button2Click(TObject *Sender) { char temp[50]; sprintf(temp,"%S",Edit1->Text); Send(temp); } void TForm1::Send(char *TX_String) { unsigned char checksum = 0x02; while(*TX_String) { checksum ^= *TX_String++; } checksum ^= 0x03; },c++,checksum,C++,Checksum,我的复制品是这样的: #include <iostream> using namespace std; void prepareAndSend() { char Command[50]; sprintf(Command,"%s", "65535V"); unsigned char checksum = 0x02; char* p = Command; while(*p) { checksum ^= *p++; }

我的复制品是这样的:

#include <iostream>
using namespace std;

void prepareAndSend() {
    char Command[50];
    sprintf(Command,"%s", "65535V");

    unsigned char checksum = 0x02;

    char* p = Command;
    while(*p) {
        checksum ^= *p++;
    }
    checksum ^= 0x03;

    std:cout << checksum << std::endl;
}

int main() {         
    prepareAndSend();         
    return 0;
}

此代码为从输入字段传递的文本创建校验和。我不熟悉C++。你知道为什么它不能用小提琴吗?

因为
char*命令[50]
与char*TX\u String不同
char*TX_String
是指向字符序列的指针,而
char*Command[50]
是此类指针的数组

试试这个:

void prepareAndSend() {
    char Command[50];
    sprintf(Command,"%s", "65535V");

    unsigned char checksum = 0x02;

    char* p = Command;
    while(*p)   {
        checksum ^= *p++;
    }   
    checksum ^= 0x03;
    std:cout << checksum << std::endl;
}
void prepareAndSend(){
char命令[50];
sprintf(命令,“%s”,“65535V”);
无符号字符校验和=0x02;
char*p=命令;
而(*p){
校验和^=*p++;
}   
校验和^=0x03;

std:cout在原始代码中,字符串是
char*
,在代码中,命令是
char**

相反,创建一个类似的校验和函数,它接受
char*
,这将使调试更容易


(并将
char*Command[50]
替换为
char Command[50]

在出现此错误的代码中,您有:

  char *Command[50];
错误是:

error: lvalue required as increment operand checksum ^= *Command++;
基本上意味着你试图增加一些不是变量的东西

这里的要点是当你有一个像
chara[10]这样的数组时
,当您编译程序时,它将为您分配10个
char
s,并且每当您使用它时,汇编代码中的名称
a
将替换为数组开头的地址。因此
a
本身不是一个变量,尽管不能增加


但是如果你定义了一个
char*b=a
,那么你就是在分配一个变量,这个变量里面有一个指针,当然可以被操作。然后
b++
有一个含义,就是增加地址。

请编辑这个问题,把给你这个错误的代码包括进去。我如何打印校验和?
error: lvalue required as increment operand checksum ^= *Command++;