cost 72 ms
为什么我们在将变量传递给 scanf 时需要地址运算符(与号,&),但在分配给它时不需要? - Why do we need the address-of operator (ampersand, &) when passing a variable to scanf, but not when assigning to it?

使用scanf function时,不能简单地指定变量名。 相反,我们必须在变量名前加上一个 & 符号,例如int a; printf("enter your value"); scanf("%d", &a); int a; printf("enter your value"); ...

结构化绑定是否应该从 function 作为 C++20 中的右值返回? - Shall structured binding be returned from a function as rvalue in C++20?

考虑一个 C++20 程序,其中 function foo中有一个结构化绑定auto [y] 。 function 返回y ,它在A类型的 object 中转换。 A可以从 const 引用或右值引用构造。 按照C++20语言标准,应该选择哪一个构造函数? Clang 选择A(const i ...

为什么右值引用参数不能直接在函数之间传递? - Why the rvalue reference parameter cannot be passed between functions directly?

我的代码如下: 当我编译上面显示的代码时,出现了一些编译错误: 好像B::send function中的str已经改成左值了。 然后我更改B::send的实现,例如: 一切顺利,但是这个程序的output让我更加迷惑了。 output如下: 为什么参数 str 是一个右值引用,但我不能在没有 ...

如何将临时对象作为非常量引用传递给成员函数? - How do I pass a temporary object as a non-const reference into a member function?

我们正在创建一个旨在从当前模块发送信息的类(具体内容与此问题无关)。 这种类型的对象被创建并填充有需要发送的部分数据,然后传递给(不同的类)成员函数。 该函数为对象提供其余数据,然后通过对象本身的调用触发发送。 因为传入的信息是动态的,所以目的是信息传输对象是一个临时的,用最新的数据创建。 我们划出 ...

类类型是否会发生左值到右值的转换? - Does lvalue-to-rvalue conversion ever happen to class types?

实际上,我在网上看到的每个左值到右值转换的例子都与int等基本类型有关。 我自己找不到适用于类类型的 l2r 示例; 在所有看似适用的例子中,通常有一个函数涉及 lvalue-ref(如 copy-ctor),为此 l2r 似乎被抑制(参见例如这个问题)。 然而,在 l2r 本身的描述中,有一个 ...

使用未初始化的变量而不调用未定义的行为 - Using uninitialized variable without invoking undefined behavior

从 6.3.2.1(强调我的) 如果左值指定了自动存储持续时间的 object,该自动存储持续时间可以用寄存器存储 class 声明(从未使用过它的地址) ,并且 object 未初始化,并且未在使用初始化程序之前对其执行赋值),行为未定义。 这意味着,如果无法使用寄存器存储 class 声明自动 ...

`(i) = 1` 在标准 C 中是否非法? - Is `(i) = 1` illegal in standard C?

我正在编写遵循此标准的 C 编译器,如果我解析这样的语句: 我的编译器会报告一个错误,指出(i)是一个右值并且不应该是可赋值的。 我检查了代码和规则,发现:在赋值表达式语义中: 赋值运算符应具有可修改的左值作为其左操作数。 赋值表达式在赋值后具有左操作数的值,但不是左值。 就我而言,有两个赋值表达 ...

void 表达式中的未定义行为 - Undefined behavior inside void expressions

C 实现是否需要忽略在计算 void 表达式期间发生的未定义行为,就好像计算本身从未发生过一样? 考虑到 C11, 6.3.2.2 §1: 如果任何其他类型的表达式被评估为 void 表达式,则其值或指示符将被丢弃。 (对 void 表达式的副作用进行评估。) 这与用于防止编译器警告 ...

在等号左侧使用右值引用的规则是什么? - What are the rules about using an rvalue reference on the left side of an equals sign?

所以我一直在学习右值和右值引用,并且在试验时遇到了一些代码,我无法解决这些错误。 我只是想知道 std::strings 和 int 的右值引用的处理方式有何不同,以及为什么一个有效而一个无效。 我正在使用带有 C++17 的 Visual Studio 2019 ...

从返回值的引用移至std :: mo时的自动安全性 - Safety of auto when std::move ing from a returned reference of a value

我需要放心,无论何时使用以下方法来分配或列表初始化auto键入的命名变量: 一个std::move ()ed返回对变量的引用 B返回对变量的引用 在表达式之后,原点超出范围的地方是A安全/ B不安全。 示例代码: 据我所知,表达式B生成赋值的左值,因此elem ...

当一个函数引用一个右值引用时,该函数中该变量的类型是什么? - When a function takes an rvalue reference, what is the type of that variable within the function?

这是一个术语问题。 如果我有这个: 那么v是什么类型? 如果您正在谈论调用f0 ,您会说“ f0带有右值引用”(对吗?),但在f0内, v不是右值引用,否则不需要std::move吗? 对? 但是static_assert显示它是一个右值,对不对? 类似地: 本地右 ...

atomic_load()和赋值有什么区别? - What is the difference in atomic_load() and assignment?

我正在从事一个涉及许多原子操作的项目。 到现在atomic_load()我还不了解atomic_load() ,仅依靠赋值运算符来获取原子类型的值,除了进行大量测试外,我没有看到任何错误。 这些原子类型由多个进程和线程更改,也由atomic_compare_exchange_strong_e ...

为什么gcc 6.4.0 c ++ 14会自动左移lvalue到rvalue - why gcc 6.4.0 c++14 moves automatically lvalue to rvalue

我遇到一个问题,gcc编译器将局部变量(非临时)作为函数的rvalue参数移动。 我有一个简单的例子: 输出: 我没想到它,因为移动赋值使rvalue为零。 在我的情况下它导致崩溃,因为在b1 = b2之后使用了b2; 问题是它为什么会发生。 ...

错误:类型“std::function”的非常量引用的初始化无效<void()> &amp;&#39; 来自 &#39;main():: 类型的右值<lambda()> &#39;| - error: invalid initialization of non-const reference of type 'std::function<void()>&' from an rvalue of type 'main()::<lambda()>'|

编辑:对不起,我在没有对参考文献的理解的情况下问了这个问题...... 当我运行此代码时,我似乎收到此错误... 错误:从“main()::”类型的右值对“std::function&amp;”类型的非常量引用进行无效初始化 但是,当我在const之前添加一个const时,错误就会消失……像 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM