C 语言中常用的几种基本数据类型有
基本数据类型的长度
- short =2 unsigned short=2
- char =1 unsigned char=1
- int =4 unsigned int=4
- long =8 unsigned long=8
float=4 float 没有 unsigned
double=8 double 没有 unsigned
占位符的基本介绍
- char vChar = -'a';
- unsigned char uvChar =-'a';
- short vShort = -100;
- unsigned short vuShort =100;
- int vInt = -1;
- unsigned int uvInt = 2;
- float vFloat = -200.02;
- // unsigned float vuFloat = 200.02;
- long vLong = -300.12;
- unsigned long vuLong = 300.12;
- double vDouble = -4000.45;
- printf("vChar= %d uvChar=%d vShort=%d vuShort= %d vInt=%d uvInt=%d vLong =%ld vuLong=%lu vFloat=%f vDouble=%f",vChar,uvChar,vShort,vuShort,vInt,uvInt,vLong,vuLong,vFloat,vDouble);
打印 debug 常用的占位符的详细介绍
%@ 对象
%d, %i 整数
%li 长整型
%u 无符号整形
%f 浮点 / 双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e 浮点 / 双字 (科学计算) (double)
%g 浮点 / 双字 (double)
%s C 字符串
%.*s Pascal 字符串
%c 字符
%C unichar
%lld 64 位长整数 (long long)
%llu 无符号 64 位长整数
%Lf 64 位双数
%% % 转义
尽管有那么多的占位符, 但是好像没有发现 BOOL 型的数据的占位符, 这也是比较纠结的地方, 看了一下别人是怎么解决这个问题的
- BOOL studyBool = YES;
- NSLog(@"打印 BOOL 型数据 %@",studyBool?@"YES":@"NO");// 打印 BOOL 型数据 YES
- NSLog(@"打印 BOOL 型数据 %d",studyBool);// 打印 BOOL 型数据 1
- BOOL alsoBool = NO;
- NSLog(@"打印 BOOL 型数据 %@",alsoBool?@"YES":@"NO");// 打印 BOOL 型数据 NO
- NSLog(@"打印 BOOL 型数据 %d",alsoBool);// 打印 BOOL 型数据 0
详细介绍:**********************************************************
%@: Objective-C 对象, 印有字符串返回 descriptionWithLocale: 如果于的话, 或描述相反. CFTypeRef 工作对象, 返回的结果的 CFCopyDescription 功能.(这个翻译有问题建议按照自己的理解方式理解).
%%: 为'%'字符;
%d,%D,%i: 为 32 位整型数 (int);
%u,%U: 为 32 位无符号整型数 (unsigned int);
%hi: 为有符号的 16 位整型数 (short);
%hu: 为无符号的 16 位整型数 (unsigned shord);
%qi: 为有符号的 64 位整型数 (long long);
%qu: 为无符号的 64 位整型数 (unsigned long long);
%x: 为 32 位的无符号整型数 (unsigned int), 打印使用数字 0-9 的十六进制, 小写 a-f;
%X: 为 32 位的无符号整型数 (unsigned int), 打印使用数字 0-9 的十六进制, 大写 A-F;
%qx: 为无符号 64 位整数 (unsigned long long), 打印使用数字 0-9 的十六进制, 小写 a-f;
%qX: 为无符号 64 位整数 (unsigned long long), 打印使用数字 0-9 的十六进制, 大写 A-F;
%o,%O: 为 32 位的无符号整数 (unsigned int), 打印八进制数;
%f: 为 64 位的浮点数 (double);
%e: 为 64 位的浮点数 (double), 打印使用小写字母 e, 科学计数法介绍了指数的增大而减小;
%E: 为 64 位的浮点数 (double), 打印科学符号使用一个大写 E 介绍指数的增大而减小;
%g: 为 64 位的浮点数 (double), 用 %e 的方式打印指数, 如果指数小于 4 或者大于等于精度, 那么 %f 的风格就会有不同体现;
%G: 为 64 位的浮点数 (double), 用 %E 的方式打印指数, 如果指数小于 4 或者大于等于精度, 那么 %f 的风格就会有不同体现;
%c: 为 8 位的无符号字符 %c(unsigned char), 通过打印 NSLog() 将其作为一个 ASCII 字符, 或者, 不是一个 ASCII 字符, 八进制格式 \ ddd 或统一标准的字符编码的十六进制格式 \ udddd, 在这里 d 是一个数字;
%C: 为 16 位 Unicode 字符 %C(unichar), 通过打印 NSLog() 将其作为一个 ASCII 字符, 或者, 不是一个 ASCII 字符, 八进制格式 \ ddd 或统一标准的字符编码的十六进制格式 \\udddd, 在这里 d 是一个数字;
%s: 对于无符号字符数组空终止,%s 系统中解释其输入编码, 而不是别的, 如 utf-8;
%S: 空终止一系列的 16 位 Unicode 字符;
%p: 空指针 (无效 *), 打印十六进制的数字 0-9 和小写 a-f, 前缀为 0x;
%L: 在明确规定的长度下, 进行修正, 下面的一批数据 a,A,e,E,f,F,g,G 应用于双精度长整型的参数;
%a: 为 64 位的浮点数 (double), 按照科学计数法打印采用 0x 和一个十六进制数字前使用小写小数点 p 来介绍指数的增大而减小;
%A: 为 64 位的浮点数 (double), 按照科学计数法打印采用 0X 和一个十六进制数字前使用大写字母小数点 P 界扫指数的增大而减小;
%F: 为 64 位的浮点数 (double), 按照十进制表示法进行打印;
%z: 修改说明在 %z 长度以下 d,i,o,u,x,X 适用于某一指定类型的转换或者适用于一定尺寸的整数类型的参数;
%t: 修改说明在 %t 长度以下 d,i,o,u,x,X 适用于某一指定类型或一定尺寸的整数类型的转换的参数;
%j: 修改说明在 %j 长度以下 d,i,o,u,x,X 适用于某一指定类型或一定尺寸的整数类型的转换的参数
来源: http://www.bubuko.com/infodetail-2970057.html