Iphone 逻辑错误:左操作数为'&';是一个垃圾值

Iphone 逻辑错误:左操作数为'&';是一个垃圾值,iphone,ios5,mgtwitterengine,Iphone,Ios5,Mgtwitterengine,我使用TwitterOAuth iPhone在我的应用程序中同步消息。在iOS4中没有问题 升级到iOS5后,选择菜单“产品分析”,并得到一些警告 在NSData+Base64.m中,警告“&”的左操作数是垃圾值 此处的代码: if( ixinbuf == 4 ) { ixinbuf = 0; outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 ); outbuf [1] = ( ( inbuf[

我使用TwitterOAuth iPhone在我的应用程序中同步消息。在iOS4中没有问题
升级到iOS5后,选择菜单“产品分析”,并得到一些警告

在NSData+Base64.m中,警告“&”的左操作数是垃圾值

此处的代码:

if( ixinbuf == 4 ) {
ixinbuf = 0;
outbuf [0] = ( inbuf[0] << 2 ) | ( ( inbuf[1] & 0x30) >> 4 );
outbuf [1] = ( ( inbuf[1] & 0x0F ) << 4 ) | ( ( inbuf[2] & 0x3C ) >> 2 );
outbuf [2] = ( ( inbuf[2] & 0x03 ) << 6 ) | ( inbuf[3] & 0x3F );

for( i = 0; i < ctcharsinbuf; i++ ) 
    [mutableData appendBytes:&outbuf[i] length:1];
}
if(ixinbuf==4){
ixinbuf=0;
exputf[0]=(inbuf[0]>4);
exputf[1]=((inbuf[1]&0x0F)>2);
exputf[2]=((inbuf[2]&0x03)哦,非常好

Clang在这里告诉您的是,在某些非常特殊的情况下,您可能永远不会初始化
inbuf[1]
。我相信这可能会发生在类似以下内容的输入上:

a=

这里还指出了另一个主要问题,
inbuf
extruf
的大小被交换。应该是
char inbuf[4],extruf[3]
,反之亦然。

您可以添加一个if语句,以确保
inbuf[x]
中有一些值

if(sizeof(inbuf[1])>0x1) exputf[0]=(inbuf[0]>4); if(sizeof(inbuf[2])>0x1) exputf[1]=((inbuf[1]&0x0F)>2); if(sizeof(inbuf[3])>0x1) exputf[2]=((inbuf[2]&0x03)
但是我不确定它是否是“傻瓜式的”。

通过将inbuf初始化为空字符数组来避开它:

unsigned char inbuf[4] = {};
unsigned char outbuf[3];

单击该消息,它将显示垃圾值的来源。(如果仍然需要帮助,请发布屏幕截图。)谢谢@Dashwuff。我已将第35行从“unsigned char inbuf[3],exputf[4];”更改为“unsigned char inbuf[4],exputf[3];”。黄色警告消失(太好了!)。但仍显示逻辑错误。还有其他提示吗?