黑马程序员技术交流社区

标题: 关于OC编译中,int函数的赋值与运用 [打印本页]

作者: 847374032    时间: 2016-1-27 22:21
标题: 关于OC编译中,int函数的赋值与运用
/*

枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击

士兵类
名称:Soldier
属性:姓名(_name)    life    level(等级)
行为:开枪


*/

#import <Foundation/Foundation.h>
#pragma mark - 枪类
@interface Fun:NSObject
{
    @public
    //型号(_size)
    NSString *_cha;
    //子弹个数(_bulletCount)
    int _ziDan;
}
-(void)kaiQiang;

@end

@implementation Fun

-(void)kaiQiang{
    if(_ziDan>0){
        _ziDan --;
        NSLog(@"哒!剩余子弹数:%d",_ziDan);
    }else{
        NSLog(@"您没有子弹了");
    }
}

@end

#pragma mark - 士兵类

@interface shiBing:NSObject
{
    @public
    //姓名(_name)
    NSString *_name;
    // life
    int life;
    // level(等级)
    int level;
}

-(void)Bydd:(Fun *)fin;

@end


@implementation shiBing

-(void)Bydd:(Fun *)fin{
    [fin kaiQiang];
}

@end

int main(int argc,const char * argv[])
{
    @autoreleasepool
    {
        int i;
        shiBing *xsd = [shiBing new];
        xsd -> _name = @"超级战士";
        xsd -> level = 4;
        
        Fun *ak47 = [Fun new];
        ak47 -> _cha = @"Ak47";
        ak47 -> _ziDan = i;
        
        
        NSLog(@"现在4级,请输入您需要的子弹数");
        scanf("%d",&i);
        for(int a = 1 ; a<=i ; a++){
            [xsd Bydd:ak47];
        }
      
    }
    return 0;
}
在这段代码中,main函数里的i变量应该被赋值为 用户输入的函数, 但是实际运行时 输出的结果却是 全部为0且循环输入的次数, 不解!

作者: 847374032    时间: 2016-1-27 22:22
顶!! 求大神解答啦!~ {:2_30:}
作者: 学以致用表初衷    时间: 2016-1-28 12:19
按照我的理解。你当初赋值你只是把 i的值赋值给 子弹了
而后又 3赋值给i这个地址了。而子弹的 指针并没有改变。
NSLog(@"现在4级,请输入您需要的子弹数");
        scanf("%d",&i);
这两句放在赋值的上边就好了
作者: 847374032    时间: 2016-2-1 21:15
谢谢!说的对!
作者: u37kl    时间: 2016-2-8 11:07
对对象中ziDan变量赋值为0,然后改变i的值,此时ziDan变量还是0,应该是先调用scanf函数,为i赋值,然后将i值赋给ziDan变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2