lvalue相关内容
让 int a = 0; (int)a 不同的编译器对此代码显示不同的结果: #include using namespace std; void f(int& x) { cout
..
我正在阅读Thomas Becker的关于右值引用及其使用的文章。在那里他定义了他所说的 if-it-has-a-name 规则: 声明为右值引用可以是lvalues或 rvalues。区分标准是:如果它有一个名称,那么它是 一个左值。否则,它是一个右值。 这听起来很合理。它还清楚地标识了右值引用的重要性。 我的问题是: 您同意这项规定吗?如果没有,您可以举一个违反此规
..
string foo(){return“hello”; } int main() { //下面的例子应该是非法的绑定一个非const(lvalue)引用到一个右值 string& tem = foo(); //下面应该是正确的,因为只有const引用可以绑定到rvalue(最重要的const) const string& constTem = foo(); }
..
为什么第一次返回引用? int x = 1; int y = 2; (x> y?x:y)= 100; 第二个不是? int x = 1; long y = 2; (x> y?x:y)= 100; 实际上,第二个根本没有编译 - “赋值左侧没有左值”。 > 解决方案 表达式没有返回类型,它们有一个类型和 - 在最新的C ++标
..
下面是在程序中使用的结构: 结构basic_block { void *的辅助; / *诸多领域, 这是无关紧要的。 * / }; 现在 basic_block 的几个实例程序的执行过程中存在。 该项目工程分阶段/通行证,这是一个接一个执行。 的辅助字段是为存储级和 basic_block A阶段的执行过程中的具体数据,并释放通过舞台本身(所以下一个阶段可以重复使用它)。这
..
在以下code,是 *一个右值或左值? 的#include<&stdio.h中GT;无效的主要() { INT B = 2; 为int * A = NULL; 一个=和b; * A = 3; 的printf(“%d个”,一*);} 解决方案 有一个左值,并且可以在r值的上下文中使用。见例子; INT I,J,* P,* Q; P =&放;我;
..
假设定义: INT I = 10; 为int * p =&放;我; 为什么* P一个有效左值这里: * P + = 10; 应该不是* P计算为贮存于放大器的整型值;我,即得。 10,因此产生了“不是左值”的错误? 解决方案 在左值是指一个地区的前pression 存储的能够被操纵 * P 就是这样一个前pression指向存储的区域。这比说 10 + = 10个
..
#包括LT&;&stdio.h中GT; // 1号线 #包括LT&;&CONIO.H GT; // 2号线 3无效的主要()//行 {// 4号线 INT A = 6,G = 7,B = 3; // 5号线 clrscr(); // 6号线 的printf(“%D”,A> G =?答:G = B); // 7号线 残培(); // 8号线 } 案例1:保存
..
所以我试图用 ether_aton()返回一个结构ether_addr * 。结果 我试图把它放在我的结构ether_header * EPTR (净/ ethernet.h),它具有 ether_shost 成员。我想这样的: 结构ether_header * EPTR; / *净/ ethernet.h * / ... (结构ether_addr *)(eptr-> ether_
..
什么是错误消息“左值需要”,其实是什么意思? 解决方案 这是左值是'可分配的东西'的东西,可以在赋值的左侧出现,换句话说 所以,寻找一个任务,其中左侧是不是'分配',例如,这么简单的东西可能会引发这样的错误 如果(0 =富) {} 在这里,你得尝试分配给一个常量,因为不小心使用=,而不是==的 另请参见 经常使用很少定义的术语:左值 左值和右值 “所需的L值”错误
..
我这里有字符文本[60]; 然后我在如果: 如果(数量== 2) 文字=“真棒”; 其他 文字=“你失败了”; 和它总是说前pression必须是一个可修改的L值。 解决方案 您不能更改文本值,因为它是一个数组,而不是一个指针。 无论其声明为字符指针(在这种情况下,最好将其声明为为const char * )为const char *的文本; 如果(数== 2) 文字
..
我想了解指针递增和提领走在一起,我这样做是为了尝试一下: 的#include<&stdio.h中GT; INT主(INT ARGC,CHAR *的argv []) { 字符*字[] = {“字词1”,“字词2”}; 的printf(“%P \\ N”字); 的printf(“%S \\ n”,*字++); 的printf(“%P \\ N”字); 返
..
的#include<&stdio.h中GT;诠释的main() { INT I = 10; 的printf(“%d个\\ n”,++( - 我)); //< - 错误这里 } 什么是错的 ++( - 我)?请澄清。 解决方案 -i 生成一个临时的,可以不适用 ++ 上的临时(作为右值前pression的结果而产生)。 pre增量 ++ 要求其操作数是一个左值,
..
为什么我收到 左值要求作为分配的左操作数 用一个字符串比较?我怎么能在ç解决这个问题?如果(STRCMP(“你好”,“你好”)= 0) 谢谢! 解决方案 您需要比较,不分配:如果(STRCMP(“你好”,“你好”)== 0) ^ 由于要检查是否 STRCMP的结果(“你好”,“你好”)等于 0 。 关于错误: 需要
..
张贴我最有争议的答案之一
..
只是想知道一个字符串是一个左或右值。其他的文字(如整型,浮点,焦炭等)的左值或右值? 是一个函数左值或右值的返回值? 你如何分辨? 解决方案 字符串文字是左值,但你不能改变它们 右值,但如果它是一个指针和非NULL,它指向的对象是到左值 C标准承认的原有条款主张的左的和的右键的如 L = R ;然而,它说想左值作为的定位符值的,这大概意味着你可以得到一个对象的地址,
..
INT的main() { 诠释一个= 5,B = 2; 的printf(“%d个”,一个+++++ b)条; 返回0; } 这code提供了以下错误: 错误:左值要求作为增量的操作数 但是,如果我把空格整个 A ++ + 和 ++ b ,然后正常工作。 INT的main() { 诠释一个= 5,B = 2; 的printf(“%d个”,一个+ + +
..
在R,“分配('X',V)”规定,其名称是对象的“x”为诉由应用文本函数变量x的结果“X”替换。那么,“分配”显示了它的价值。 不幸的是,“分配(糊('名称(','X',')',九月=''),v)的”失败。所以,如果“X”是一个变量x,我可以设置它的价值,但我不能给它的名字为它的元素。 可在一个解决此问题?解析-EVAL把戏可能?谢谢你。 解决方案 在你问问题,没有必要为分配名称的形式
..
阅读中的K&放大器结构的章节后,R的书,我决定做一些测试,以更好地了解他们,所以我写了这片code的: 的#include<&stdio.h中GT; #包括LT&;&string.h中GT;结构测试FUNC(字符* C);结构测试 { INT I; 诠释J; 炭×〔20〕; };主要(无效) { 焦C [20]; 结构{INT I;诠释J;炭×〔20
..
可能重复:结果 是数组名在C中的指针? 假设我有一个字符数组说编曲和改编将重新present第一个元素的地址,以便ARR ++应该是完全合法的,那么为什么编译器说“左值要求。 另外,如果我这样做: ARR = ARR + 1,那么它为什么是无效的转换。我只是一个增加指针。编译器告诉LHS上的操作数类型为char [4],但在RHS它的char *。 的main() { ARR的cha
..