Objective-C

1. [Objective-C] NSLog, 변수

Daesiker 2021. 1. 25. 16:55
반응형

1-1 개요

Objective-C는 프로그래밍 언어에 스몰토크 스타일의 메시지 구문을 추가한 객체지향 언어이다. Swift가 만들어지기 이전에 애플의 매킨토시의 OS인 OSX와 아이폰의 운영체제인 IOS에서 사용되었다. 원래는 배울 생각이 전혀 없었는데 회사에서 Objective-C 기반의 코드를 Swift로 변환을 해야된다고 그래서 공부를 하기로 결심했다. IOS를 개발하면서 나쁠건 없다고 생각하기 때문에 포스팅을 시작하려고 한다.


1-2 NSLog

console에 출력하는 함수이다.

NSLog(@"포맷문자", 인자)로 사용하면 된다. 포맷문자는 C언어랑 똑같다.

  • 정수형 : %d, %u(unsigend), %ld, %lu(unsigned)
  • 실수형 : %f, %e(지수형)
  • 16진수, 8진수 : %x, %o
  • 객체형 %@

Example

NSLog(@"Hello, Objective-C!"); //Hello, Objective-C!
NSLog(@"%d + %d = %d", 1, 2, (1+2)); //1 + 2 = 3


1-3 변수

💡
TypeKeyword name = value; TypeKeyword name[space] = value

원하는 타입에 키워드를 선언하고 변수이름을 저장한 뒤 값을 저장하면 된다. Swift와 다르게 변수와 상수 개념이 없이 다 변수로 자동으로 지정이된다. 배열도 마찬가지로 변수명 뒤에 공간을 같이 선언하면 배열타입이 된다.

Example

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    @autoreleasepool {
        
        int val_integer = 0;
        float val_float = 0.0f;
        double val_double = 0.0;
        char val_char = 'C';

        int int_array[3] = {1, 5, 4};
        float float_array[2] = {0.1f, 0.8353f};
        double double_array[4] = {0.00343, 0.3324, 0.124214, 0.2415};
        char char_array[5] = {'h', 'e', 'y', '!', '\n'};
        
        NSLog(@"Before Change");
        NSLog(@"val_integer : %d", val_integer);
        NSLog(@"val_float : %f", val_float);
        NSLog(@"val_double : %lf", val_double);
        NSLog(@"val_char : %c", val_char);

        NSLog(@"int_array[0] : %d, int_array[0] : %d, int_array[0] : %d", int_array[0], int_array[1], int_array[2]);
        NSLog(@"float_array[0]: %f, float_array[1]: %f ", float_array[0], float_array[1]);
        NSLog(@"double_array[0]: %lf, double_array[1]: %lf, double_array[2]: %lf, double_array[3]: %lf", double_array[0], double_array[1], double_array[2], double_array[3]);
        NSLog(@"char_array[0]: %c, char_array[1]: %c, char_array[2]: %c, char_array[3]: %c, char_array[4]: %c", char_array[0], char_array[1], char_array[2], char_array[3], char_array[4]);
        
        val_integer = 00;
        val_float = 43.51f;
        val_double = 14.3251341;
        
        int_array[2] = 3;
        float_array[0] = 0.321f;
        double_array[2] = 123.12312;
        char_array[3] = 'r';
        
        NSLog(@"After Change");
        NSLog(@"val_integer : %d", val_integer);
        NSLog(@"val_float : %f", val_float);
        NSLog(@"val_double : %lf", val_double);
        NSLog(@"val_char : %c", val_char);

        NSLog(@"int_array[0] : %d, int_array[0] : %d, int_array[0] : %d", int_array[0], int_array[1], int_array[2]);
        NSLog(@"float_array[0]: %f, float_array[1]: %f ", float_array[0], float_array[1]);
        NSLog(@"double_array[0]: %lf, double_array[1]: %lf, double_array[2]: %lf, double_array[3]: %lf", double_array[0], double_array[1], double_array[2], double_array[3]);
        NSLog(@"char_array[0]: %c, char_array[1]: %c, char_array[2]: %c, char_array[3]: %c, char_array[4]: %c", char_array[0], char_array[1], char_array[2], char_array[3], char_array[4]);
    }
    return 0;
}

—출력결과

로그를 사용할 때 정말 귀찮지만 대학교 1학년 때 C언어를 배운사람이라면 아주 쉽게 변수 선언과 출력정도는 손쉽게 할 수 있을 것 같다.


1-4 실수표현 방법

—Example

int main(int argc, const char * argv[]) {
    
    @autoreleasepool {
        double val_double = 12352.336324;
        
        NSLog(@"%%lf : %lf", val_double);
        NSLog(@"%%.3lf : %.3lf", val_double);
        NSLog(@"%%10.3lf : %10.3lf", val_double);
        NSLog(@"%%10lf : %10lf", val_double);
        NSLog(@"%%-15lf : %-15lf", val_double);
    }
    return 0;
}

  • %lf : 실수를 있는 그대로 출력
  • %.3lf : 실수를 출력하되 소수 3번째 자리까지만 출력
  • %10.3lf : 총 10개의 칸에 출력을 하되 소수점은 3번째 자리까지만 출력
  • %10lf : 총 10개의 칸에 수를 출력
  • %-15lf : 총 15개의 칸에 수를 출력하되 오른쪽 정렬로 수를 출력

—출력 결과


1-5 마치며...

오늘은 가장 기초가 되는 출력하는 방법과 변수의 표현 방법 다양한 실수의 출력방법을 공부했다. 확실히 옛날 언어라 그런지 가독성이 많이 떨어지는 부분이 아쉽지만 어서 빨리 습득을 해서 *.m 파일과 *.h 파일이 모두 *.swift로 바뀌었으면 좋겠다. 다음 포스팅은 class와 instance 부분을 집중적으로 다룰 예정이다.

반응형

'Objective-C' 카테고리의 다른 글

4.[Objective-C] Function(함수)  (0) 2021.01.27
3. [Objective C] Class(2)  (0) 2021.01.26
2. [Objective-C] Class(1) Property  (0) 2021.01.26