下面两句代码有什么不同

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:17:51
xx[i][j]+=xx[i][j]>>4;

和 xx[i][j]=xx[i][j]+x[i][j]+4; 有什么不一样?

#include<stdio.h>
#include<string.h>
#include<conio.h>
char xx[50][80];
int maxline = 0; /* 文章的总行数 */
int ReadDat(void);
void WriteDat(void);

void StrCharJR(void)
{
int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
xx[i][j]=xx[i][j]+x[i][j]+4; (为什么用这句代码由下面的错误)

}
错误提示如下
Error turboc.c 14: Undefined symbol 'x' in function StrCharJR
Error turboc.c 14: Invalid indirection in function StrCharJR

x+4是算数运算;
x>>4是右移位运算,右移一位相当于除以二,右移四位就是除以2^4

xx[i][j]=xx[i][j]+xx[i][j]+4;少写了个x 吧

xx[i][j]+=xx[i][j]>>4; 和 xx[i][j]=xx[i][j]+x[i][j]+4; 有什么不一样?
这不是问题,要说是问题的话也是学习时太粗心了,这两个程序根本就是没有可比性.完全两回事.

位操作用">>". 与算术操作完全不一样.+4是算数运算加4;>>4是右移位运算右移4位.