Jos*_*eld 19

智能答案:

int old; std::cin >> old;
Run Code Online (Sandbox Code Playgroud)

可怕的答案:

int old, dummy = (std::cin >> old, 0);
Run Code Online (Sandbox Code Playgroud)

正确的答案:old必须先用声明定义才能operator>>作为参数传递给它.在变量声明中获取函数调用的唯一方法是将其放在初始化表达式中,如上所述.声明变量并将输入读入其中的可接受方式如下所示:

int old;
std::cin >> old;
Run Code Online (Sandbox Code Playgroud)

  • 聪明屁股回答,哈哈.谢谢,这是有益的 (4认同)

650*_*502 10

你可以......用

int old = (std::cin >> old, old);
Run Code Online (Sandbox Code Playgroud)

但你真的不应该这样做

  • @ 6502为什么我们不应该做你说的?? (3认同)
  • @Mohammasd•因为如果`std :: cin >> old`失败(即返回false),则`old`未初始化,然后读取`old`(第二部分,在逗号运算符之后)是未定义的行为.未定义的行为很糟糕. (3认同)
  • @AlwaysLearning:1)不幸的是,尽管存在一些重要的相关性,但票数或作者的代表并不意味着答案是正确的……没有道理可以放弃头脑,而从SO粘贴。2)在“ str”示例中,他/她使用了永远不会被初始化的“ std :: string”(即像“ int x; return x;”这样的代码是未定义的行为,“ std :: string s; return s;而是可以的)。 (2认同)