- 新建项目
- product name : 新建项目的名称,程序,产品名称 英文
- Organization Name : 作者名字(公司名字)
- Organization Identifier : 公司标识,域名反写
- Bundle Identifier : 自动生成 程序标识
- Language : 使用哪种语言开发
- Next
- 选择文件目录
Program ended with exit code : 0;
代表程序运行结束了Command + B 自动编译 检查逻辑错误
实时检查的是语法错误
程序是在内存中运行,将硬盘中的数据复制到内存中再运行
程序处理任何数据都要把数据存储起来
例如:打人要先把人抓起来存储在内存中,因为程序自己就在内存中
常见的变量的类型
- int 范围
-2147483648~2147483647- float 范围
去掉小数点7位数,超出只存储前面7位
超出部分不能精确保存.
如12.12345123可能凑巧为12.123451- double 范围
存储有效位数16位的小数- char
只能存储单个字符 ‘a’
存储多个字符保存最后一个.
中文字符占3个字节
垃圾值
声明变量后,若不赋值,里面就是之前这块
内存空间里的补码,打印出来就是补码转换
成当前变量类型的原码的值.声明完变量立即赋一个初始值.
语法: 声明变量
数据类型 变量名称;
//float变量赋值的时候,最后加f.
//小数数据默认是double
占位符:
- %d int
- %f float 默认输出小数点后六位
- %lf double 默认后六位
- %c char
printf(“%d%f%lf%c”,num,f1,d1,ch);- %md m是任意数,占多少位宽整数,不足的地方以空格补齐,负数在后面补空格,实际有多少位就显示多少
- %0md,不足用0补齐//printf(“%05d\n”,a); 显示00888
- %g 1.123,就显示1.123而不是1.123000 自动省去无效位数
- %.nf或%.nlf.n是一个数字,代表要输出小数点后几位
- %p 打印地址
批量声明:
数据类型 变量名称 =数据,变量名称;
int num1 = 2200000000; //超过了int的最大值:2^31-1,不规范
int num2 = -19; //规范
int num3 = 1.1; //int类型为整数类型,不能有小数,不规范
double d1 = 12.12f; //double类型不需要加f结尾,不规范.
float f1 = 13.57; //float类型要加f结尾,不规范
char ch1 = '哈'; //char类型不能储存中文,中文占用3个字节,char只有一个字节的容量,错误!
char ch2 = 'a'; //规范
float f2 = 1234561.56734f; // 超过了flora的最大保存7位有效数字,会损失精度,不规范.
变量的命名规范
- 只能以任意的字母,下划线,$开头,不能以数字开头
- 后面只能跟字母,数字,下划线,$
- 不能跟关键字重名 int1可以用
- C语言严格区分大小写
自动类型转换:
为变量赋值的时候,如果赋值的数据的类型 和 变量的类型不一致
这个时候C系统会将赋值的数据类 转换为 变量的类型 然后再赋值
这样的情况叫做自动类型转换
a97 -32 = A 65 0 = 48
97.1=97.9=97='a';
语法:
scanf("格式控制符",变量地址列表);
lldb 崩溃 没写取地址符号&
如果用户输入的数据和要求的不一致
小数变整数
其他数据 接受失败 默认值;
所以接收的变量要初始化默认值如果要求的是一个整形或者实型,输入之前的空格回车tab都会被忽略.直到输入了一个数据并按下回车
scanf接收多个数据
输入的时候默认用空格或者回车隔开
scanf(“%d%d”,&num1,&num2);自定义分隔符
scanf(“%d-%d-%f”,&num,&boyNum,&avg);
想用什么分隔符就在格式控制符中加入分隔符,一旦指定就不能用默认的混合输入
只能是实型,不能混入char.
缓冲区
- 执行scanf用户输入的(任何!)数据是先存储在缓冲区
执行函数时会先检查缓冲区中有没有数据,如果没有就会让用户从键盘输入,如果有就使用缓冲区数据
!!!不会让用户输入!!!
scanf函数从缓冲区按顺序拿数据,拿到对应的数据就跑.
拿到空格回车tab会自动忽略.程序重新运行缓冲区就清零
回车对于char来说也是一个字符\n
char不会忽略任何数据,但也只拿一个字符.
rewind(stdin); 清空缓冲区数据
交换两个变量的值
转圈
0=1;
1=2;
2=0;
不声明第三方变量
1=1+2;
2=1-2;
1=1-2;
异或
1=1^2;
2=1^2;
1=1^2;
强制类型转换
double = 5 *1.0 / 5
1.0不能在后面,从左到右计算
char类型可以参与算数运算
- 小写变大写-32