将函数结果分配给变量的问题

Issues with assigning result of a function to a variable

本文关键字:变量 问题 分配 函数 结果      更新时间:2023-10-16
#include <iostream>
#include <string>
using namespace std;
int main() {
   string userInput;
   int stringSize = 0;
   userInput = "Hello";
   userInput.size() == stringSize;
   cout << "Size of userInput: " << stringSize << endl;
   return 0;
}

我试图获得5个输出,但它返回0。我不知道怎么了。userInput" Hello"的尺寸应为5,userInput.size()应返回5。应该将其分配给可变字符串。旁注,谁能向我解释为什么它是" =="不" ="?如果我尝试使用" =",它不会编译,我会收到此错误:

main.cpp: In function ‘int main()’:
main.cpp:11:23: error: lvalue required as left operand of assignment
    userInput.size() = stringSize;
                       ^~~~~~~~~~

我的理解是" ="是分配的,而" =="是一个布尔比较,它是" true"或" false",具体取决于双方是否相等。我正在尝试将userInput.size()的大小分配到变量中,因此我认为我应该使用" ="。也许这是问题的一部分?

这是要求的答案(信用paco):

您始终必须将要分配的值放在=操纵器右侧的变量,然后将变量本身本身放在左侧。

您所做的是试图将stringSize的值分配给userInput.size()

我的理解是" ="是分配," =="是一个布尔比较 这是" true"或" false",具体取决于双方是否相等。

到目前为止,您的理解是正确的。

我试图将UserInput.size()的大小分配到变量 所以我认为我应该使用" ="

通常,您不能编写5 = variable在作业中的左右与右不交换,订单很重要。

如果要为某个变量分配一个值,则该变量必须在分配的左侧上:variable = 5

我使用了此简化,但是函数大小()的结果就像我的示例中的5个。这称为a rvalue (例如"右价")。

因此,在您的情况下,stringSize = userInput.size();是正确的,并将userInput的大小设置为变量stringSize(这称为a lvalue 一个可以分配给分配左侧的值)。

可以将lvalue视为过去使用的命名值,例如变量。rvalue不会持续使用它的使用,通常是函数调用的结果,或者我们通常称为"值"。

您可以将RVALUE存储在lvalue(int i = 2 + 3)中,但是您不能将lvalue分配给rvalue。那就是您的问题的存在

编译器正在丢弃错误,因为您有一个rvalue userInput.size(),并且正在将其视为lvalue,而是尝试通过尝试为其分配值。

userInput.size() = stringSize

更简单的例子是

int n = 1;
3 = n;

出于明显的原因,您不能仅仅更改3。在您的示例中,您的功能只是返回一个整数值...那么为什么要更改它呢?因此,您会收到错误

一个不同的视角:

您无法设置字符串的大小。std::string类自动为您计算长度。

因此不需要表达式:

userInput.size() = stringSize;

要清除std::string的内容,请使用clear()方法:

userInput.clear();

=是C,C 和其他编程语言中的任务运算符。

==是右侧表达式或变量的值 左侧变量的值。

简单示例:

int x,y;
x=10;
y=10;
if(x==y)
    printf("True");
else
    printf("False");

输出将是:True

在您的情况下,您必须使用一个=操作员并在变量的右侧使用功能分配。像这样的stringSize = userInput.size();

这是最终代码:

#include <iostream>
using namespace std;
int main()
{
    string userInput;
   int stringSize = 0;
   userInput = "Hello";
    stringSize = userInput.size(); //this line edited.
   cout << "Size of userInput: " << stringSize << endl;
   return 0;
}

请参阅此处的在线_C _编译器