#include <stdio.h> void main () { int x,y,z,a,b,c,d,g,f; scanf("%d+%d",&x,&y); a=x/100;b=y/100; c=x

那里错了?提示是c:\documents and settings\g-st-09\桌面\c.cpp(14) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.

首先你要知道一点,能放在赋值号(=)左边的必须是可写的。
然后一点,函数的返回值问题,这里的f()的返回值是int& 也就是一个int型的引用。如果返回的不是引用,那么返回值会产生一个临时变量,将这个临时变量赋给等号左边对象;而如果是引用的话,就不会产生临时变量,直接将引用所指的对象赋值给等号左边的对象。
临时对象是不可以做为左值的。所以不加&就会出错。
因为这里的f返回的是x的引用,(x是个全局变量,所以他这么做是有意义的)。因此f()=100就相当于x=100。

建议你在刚开始学C++的时候先多看看书,要不一些很基本的语法问题,解释起来会很麻烦,而且意义不大。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-26
就你给出的错误信息来说,是你程序中某一行的等号左边的值是不可赋值的数据,具体的请你把程序复制全发出来,或者你自己双击这个提示信息,看错误那行的等号左值是否正确使用

具体哪里错了请你把完整的程序发出来,你只发了一半
第2个回答  2010-11-27
首先你要知道一点,能放在赋值号(=)左边的必须是可写的。
然后一点,函数的返回值问题,这里的f()的返回值是int& 也就是一个int型的引用。如果返回的不是引用,那么返回值会产生一个临时变量,将这个临时变量赋给等号左边对象;而如果是引用的话,就不会产生临时变量,直接将引用所指的对象赋值给等号左边的对象。
临时对象是不可以做为左值的。所以不加&就会出错。
因为这里的f返回的是x的引用,(x是个全局变量,所以他这么做是有意义的)。因此f()=100就相当于x=100。

建议你在刚开始学C++的时候先多看看书,要不一些很基本的语法问题,解释起来会很麻烦,而且意义不大。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
第3个回答  2010-11-25
你的问题是什么?没弄懂,建议重新提问
第4个回答  2010-11-25
你想问什么??? 补充问题了 我会再来答
相似回答
大家正在搜