C:1-6


non-lvalue in assignment
是什么意思?

non-lvalue in assignment  译文:赋值中无左值
意思是:在该程序指令中没有左值,因为左值是对象的地址。类型的引用参数
只能接受本类型对象的左值。无左值是不允许的,所以出现该错误提示。
lvalue(左值)是指具有显式存储地址,能够位于赋值运算符左边(所以叫左值)的表达式。例如a, b, c这样的变量是左值,但 a+b 不是左值,因为它的值是系统临时生成的,没有显式存储地址。
你的程度(让编译器理解成)把类似 a+b 这样的非左值表达式做++运算,这样是不允许的,所以报这个错。
你再检查一下有没有让编译器误解的地方,改过来就行了。
 
左值是赋值运算(“=”操作)中的概念,比如
int a = 10;//a就是左值,需要a是一个变量
而你不能写成
10 = a;//错误,10是常量,不能做左值
同理,如果定义了常量类型,如
const int a = 10;
a = 20;//错误,a是常量,不能做左值
另外,表达式也不能作为左值出现,比如
int a = 10;
int b = 20;
a + b = 40;//错误,即使表达式里全部包含变量也不能作为左值,至于原因,你可以这样理解,就像分10元钱给张三和李四,如何分是不确定的。当然这只是个例子,你还可以有别的解释
a + 10 = 50;//错误
总结起来就是,左值是可以对其进行赋值的对象
 
#include<stdio.h> 
#define IN  1  //inside a word
#define OUT  0  //outside a word
#define MAXHIST 5 //max length of histogram
#define MAXWORD 11 //max length of a word
/*print horizontal histogram*/
main()
{
  int c,i,nc,state;
  int len;   //length of each bar
  int maxvalue;  //maximum value for wl[] 
  int ovflow;   //number of overflow words
  int wl[MAXWORD];  //word length counters
  
  state=OUT;
  nc=0;     //number of chars in a word
  ovflow=0;  //nuber  of words >=MAXWORD 
  for(i=0;i<MAXWORD;++i)
  wl[i]=0;
  while((c=getchar())!=EOF)
  {
             if(c==' ' || c=='/n' || c=='/t')
             {
                            state=OUT;
                            if(nc>0)
                              if(nc<MAXWORD)
              ++wl[nc];
          else
              ++ovflow;
          nc=0;
                 }else if(state==OUT)
                 {
                             state=IN;
                             nc=1;   //beginning of a new word 
             }else
     ++nc;      //inside  a  word
  }
  maxvalue=0;
  for(i=1;i<MAXWORD;i++)
      if(wl[i]>maxvalue)
         maxvalue=wl[i];
  for(i=1;i<MAXWORD;++i)
  {
             printf("%5d-%5d:",i,wl[i]);
             if(wl[i]>0)
             {
                            if((len=wl[i]*MAXHIST/maxvalue)<=0)
                                len=1;
                 }else
                      len=0;
     while(len>0)
     {
          putchar('*');
          --len;
     }
     putchar('/n');
  }
  if(ovflow>0)
   printf("There are %d words>=%d/n",ovflow,MAXWORD);
}
空格、换行符或制表符标志着单词的结束。如果有一个单词且它的长度小于允许的单词最大长度,这个程序将对相应的单词长度计数器加1++wl[nc].如果单词的长度超出了允许的单词最大长度(nc>=MAXWORD),这个程序将对 变量ovflow1以记录长度大于或等于MAXWORD的单词的个数。
在读入全部单词之后,程序将找出数组wl中的最大值(maxvalue)。变量len是根据MAXHISTmaxvalue的值计算得出的wl[i]所对应的直方图长度。如果wl[i]大于零,就至少要打印出一个星号。
 
 
 
 
 
 
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值