zoukankan      html  css  js  c++  java
  • 0033 C与OC差异

    //
    //  main.m
    //  05-NSLog函数使用方法
    //
    //  Created by apple on 15/1/15.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            //NSLog和printf使用的差异
            //1、NSLog 会自动换行  而printf不会自动换行
            //2、NSLog 会自动输出时间等项目信息,printf不会输出调试信息
            //3、NSLog 函数的参数是一个NSString 对象
            //         printf是一个字符串常量指针
            NSLog(@"Hello, World!");
            printf("Hello, World!
    ");
            
            //2、NSLog格式化输出的问题
            
            int a = 5;
            float f1 = 2.3f;
            double d1 = 3.14;
            char ch = 'X';
            char *str="张三丰";
            //如果能够运行,说明OC向下兼容C
            printf("%d,%.2f,%.2f,%c
    ",a,f1,d1,ch);
            printf("%s
    ",str);
            
            //NSLog格式化输出
            NSLog(@"%d,%.2f,%.2f,%c",a,f1,d1,ch);
            NSLog(@"---->%s",str);  //不能这么写
            //OC中自己特有的字符串表示方法
            //用%@输出字符串
            NSString *str1 = @"张三丰";
            NSLog(@"%@",str1);
            
            //使用printf能够打印str1?
            //不能,NSString 是OC特有的,C不支持
            printf("===>%@
    ",str1);
            
            
        }
        return 0;
    }
    
    //
    //  main.m
    //  07-访问OC源文件、C源文件中的函数
    //
    //  Created by apple on 15/1/15.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #include "a.h"
    
    /**
     *  定义C语言函数
     */
    void test(){
    
        printf("main.m  test!
    ");
    
    }
    
    //全局声明
    //void test2();
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            printf("xxxxxx
    ");
            test();  //在main.m原文件中,定义C语言函数
            
            void test2();
            test2();
            
            //调用 a.c中定义的函数
            test3();
            
        }
        return 0;
    }
    
    void test2(){
    
        printf("main.m  test2!
    ");
    
    }
    
    /*
        OC 和 C对比学习
     
        1)文件的差异
     
        2)数据类型差异
     
        3)关键字差异
     
        4)流程控制语句
     
           OC中并没有增加新的流程控制
     
           OC中提供一种增强型的for循环
     
           NSArray *arr=@[@"one",@"two",@"three"];
     
           for(NSString *str in arr){
     
                NSLog(@"%@",str);
           
           }
     
       5)OC中函数的定义和声明的差异
         
          C语言中的函数
     
          int max(int x,int y);
          
          int max(int x,int y){
     
                return x>y?x:y;
          }
     
     
          OC中把函数称之为方法
     
          +(void) test;
          -(void) test;
     
          -(int)max:(int)x andY:(int) y;
     
     
     */
    
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            
            NSArray *arr=@[@"one",@"two",@"three"];
            //OC中的增强型for循环
            for(NSString *str in arr){
                
                NSLog(@"%@",str);
                
            }
            
            
        }
        return 0;
    }
    
    /*
     OC和C对比学习第二部分
     1)OC中新增加的数据类型
     
        (1)Boolean (布林)
            作用:用来存放逻辑值 (1、真(非0)    2、假(0))
                 用来做判断
            存储的值:true(真 1)    false(假 0)
     
            Boolean flag = true;
     
            if(flag){
     
                NSLog(@"真 %d",flag);
            }else{
     
                NSLog(@"假 %d",flag);
            }
        
     
        (2)BOOL 
     
            作用:也是用来保存逻辑值
            取值:YES(真 1)   NO(假  0)
     
            BOOL flag2 = YES;
            if(flag2){
     
                 NSLog(@"真 %d",flag);
     
            }else{
     
                 NSLog(@"假 %d",flag);
            }
     
     
     
     2) OC中的异常捕捉机制
     
           异常: 程序运行的时候有bug
           捕捉机制:排除错误
     
     
        @try {
              //如果有异常
               1/0
    	      < #statements#>
     
              。。。。。。。
    	}
    	@catch (NSException *exception) { 
              //捕捉最具体的异常类型
     
    	      < #handler#>
    	}
    	@catch (NSException *ne) { 
              //捕获一个比较重要的异常类型。
    	 
    	}
    	@catch (id ue) { //再次掷出捕获的异常。
    	}
    	@finally { //不管有没有异常finally内的代码都会执行。
    	       < #statements#>
    	}
    
     
     
     
     
     */
    
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            
            //Boolean的使用
            //true 1   false  0
            Boolean flag = true;
            
            if(flag){
                
                NSLog(@"真 %d",flag);
            }else{
                
                NSLog(@"假 %d",flag);
            }
    
            //BOOL类型
            BOOL flag2 = YES;
            if(flag2){
                
                NSLog(@"BOOL YES 真 %d",flag2);
                
            }else{
                
                NSLog(@"BOOL NO 假 %d",flag2);
            }
            
            
            
           
        }
        return 0;
    }
    
  • 相关阅读:
    java bio 之聊天室
    自定义gradle plugin
    gradle build 找不到tools.jar 解决方法
    java switch case 枚举类型的反编译结果
    spring mvc 关键接口 HandlerMapping HandlerAdapter
    H5 Video 去除 下载按钮 禁用右键
    https 请求发送 例子 tls && ssl
    mac 安装mongodb
    (扫盲)DTO数据传输对象
    (扫盲)RPC远程过程调用
  • 原文地址:https://www.cnblogs.com/aiti/p/4658196.html
Copyright © 2011-2022 走看看