测试功能时出现未知解析错误
unknown parse error when testing function
我有下面的函数,它似乎可以正常工作,但是当 运行 程序通过测试程序时,我得到了错误:解析错误:[int xSwapped = ((255 << nShift) | (255 << mShift));] 和
未声明的变量“xSwapped”:[return (~xSwapped & x) | n掩码 | mMask;]
int dl15(int x, int n, int m){
// calculates shifts, create mask to shift, combine result
// get number of bytes needed to shift, multiplying by 8
// get Masks by shifting 0xff and shift amount
// shift bits to required position
// combine results
int nShift = n<< 3;
int mShift = m<< 3;
int nMask = x & (255 << nShift);
int mMask = x & (255 << mShift);
nMask = 255 & (nMask >> nShift);
mMask = 255 & (mMask >> mShift);
nMask = nMask << mShift;
mMask = mMask << nShift;
int xSwapped = ((255 << nShift) | (255 << mShift));
return (~xSwapped & x) | nMask | mMask;
}
不确定我缺少什么,谢谢。
您似乎正在使用设置为旧 C 标准的 C 编译器。在 C99 之前,您不能在声明之前放置可执行语句。
您可以通过将 xSwapped
的声明移动到顶部来解决此问题:
int nShift = n<< 3;
int mShift = m<< 3;
int nMask = x & (255 << nShift);
int mMask = x & (255 << mShift);
int xSwapped; // Declaration
nMask = 255 & (nMask >> nShift);
mMask = 255 & (mMask >> mShift);
nMask = nMask << mShift;
mMask = mMask << nShift;
xSwapped = ((255 << nShift) | (255 << mShift)); // Assignment
return (~xSwapped & x) | nMask | mMask;
我有下面的函数,它似乎可以正常工作,但是当 运行 程序通过测试程序时,我得到了错误:解析错误:[int xSwapped = ((255 << nShift) | (255 << mShift));] 和 未声明的变量“xSwapped”:[return (~xSwapped & x) | n掩码 | mMask;]
int dl15(int x, int n, int m){
// calculates shifts, create mask to shift, combine result
// get number of bytes needed to shift, multiplying by 8
// get Masks by shifting 0xff and shift amount
// shift bits to required position
// combine results
int nShift = n<< 3;
int mShift = m<< 3;
int nMask = x & (255 << nShift);
int mMask = x & (255 << mShift);
nMask = 255 & (nMask >> nShift);
mMask = 255 & (mMask >> mShift);
nMask = nMask << mShift;
mMask = mMask << nShift;
int xSwapped = ((255 << nShift) | (255 << mShift));
return (~xSwapped & x) | nMask | mMask;
}
不确定我缺少什么,谢谢。
您似乎正在使用设置为旧 C 标准的 C 编译器。在 C99 之前,您不能在声明之前放置可执行语句。
您可以通过将 xSwapped
的声明移动到顶部来解决此问题:
int nShift = n<< 3;
int mShift = m<< 3;
int nMask = x & (255 << nShift);
int mMask = x & (255 << mShift);
int xSwapped; // Declaration
nMask = 255 & (nMask >> nShift);
mMask = 255 & (mMask >> mShift);
nMask = nMask << mShift;
mMask = mMask << nShift;
xSwapped = ((255 << nShift) | (255 << mShift)); // Assignment
return (~xSwapped & x) | nMask | mMask;