Iphone 逻辑错误:左操作数为'&';是一个垃圾值
我使用TwitterOAuth iPhone在我的应用程序中同步消息。在iOS4中没有问题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[
升级到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];”。黄色警告消失(太好了!)。但仍显示逻辑错误。还有其他提示吗?