#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
你想问什么??? 补充问题了 我会再来答

#include<stdio.h> void main() { int a,b; float x,y; char c1,c2...
include<stdio.h> int main(){ int a,b;float x,y;char c1,c2;scanf("%d%d",&a,&b);\/\/不要添加多余字符 scanf("%f%f",&x,&y);\/\/float类型用%f getchar(); \/\/ 添加此句接收上一句按下的回车符 scanf("%c%c",&c1,&c2);\/\/输入这两字符时需连在一起 输入 printf("%d ...

#include <stdio.h> void main() { int x,y; scanf("%d%d",&x,&y...
C++ int型根据操作系统不同而不同,但是99标准规定是。 int型不小于4字节(32bits)也就是2^32次方4 294 967 296 所以你可以输入1234567890都完全没有问题。

键盘输入x,y,z三个数,用编程实现从小到大输出?
include<stdio.h> void main() { int x,y,z,a;scanf("%d%d%d",&x,&y,&z);if ( x>y ) {a=x;x=y;y=z;} if ( x>z ) {a=x;x=z;z=a;} if ( y>z ) {a=y;y=z;z=a;} printf("%d %d %d\\n",x,y,z);} ...

#include<stdio.h> int main(void) {float x,y; scanf("%d,%d",&...
同意楼上的,你写错了,在printf语句中,应该把取地址符去掉,这样才能正确输出你想要的结果!此外,x,y是浮点数,就应该用%f格式输出,而不能选择%d!或者把float改为int,如果按照楼主的写法,则会输出x和y的地址;例如输入1、2,会输出2293572和2293568(不同编译器下不同时刻输出结果不同)并且建议...

C语言程序编写“输入两个整数,分别求他们的和、差、积、商、余数,并...
前面声明变量的时候类型是浮点型,所以格式符应该使用%f而不是%d,%d是整型。改为:include "stdio.h"void main(){ float x,y,a,b,c,d;scanf("%f%f,&x,&y);printf("%f%f%f",x+y,x-y,x*y,x\/y,x%d);}

#include<stdio.h> void main() { char a='本金',b='年数',c='年利率...
main() {int x ;printf(“%d\\n”,(x=4*5,x*2,x+20));}A)20B)40C)60D)809.执行以下程序后的输出结果是( )。#include "stdio.h"void main(){int i = 0, j = 0, a = 6;if ((++i0)||(++j0)) a ++;printf("i=%d, j=%d, a=%d\\n", i, j, a);}A)i=0, j=0, a=...

#include <stdio.h> void main() { int x,y,z; scanf(“%d”,&z...
#include <stdio.h> void main() { int x,y,z; scanf(“%d”,&z); x=0; z=x+y printf(“z=%d\\n”,z) } 跪求此程序的错误并修改 ... 跪求此程序的错误并修改 展开  我来答 1个回答 #专题# 在山村中遭遇暴雨时,应该如何做好抗洪防险工作?

#include<stdio.h> void main() { int x,y,z;x=y=1;z=(++x)+(++y)+...
z=(++x)+(++y)+(x++);原式相当于z=n1+n2+n3 先执行n1=++x 执行后,x=2,n1=2 再执行n2=++y 执行后,y=2,n2=2 然后是n3=x++ 执行后,n3=2,x=3 最后为z=2+2+2 得z=6

#include<stdio.h> void main() { int x; float a; char b; printf...
变量在定义时系统会为其分配存储空间,若未对变量进行初始化,此存储空间的存储的值有随机性。一般建议每个变量在定义时即对其进行初始化。

#include<stdio.h> void main() { int x,y,a,b,c; printf("请输入三...
除号是\/而不是\\ printf语句写成printf("三位数是y=%d\\n",y);

相似回答
大家正在搜