关键字分为数据类型的关键字和流程控制关键字总共有32个关键字 前者20个后者12个 如int float是数据类型关键字 return是流程控制关键字
有一点 c语言中所有的关键字都有特殊的颜色区别;
标识符划分为 关键字、预定义标识符、用户自定义标识符 它的命名有四条规则:
1.只能以字母 数字 下划线 或者美元符号组成;
2.不能以数字开头;
3.不能与关键字同名;
4.严格区分大小写;
标识符的命名规范要遵循驼峰命名法如userName userLoginFlag 如果一个标识符由多个单词构成
第一个单词以小写字母开始后面几个单词的首字母都大写 或者所有单词的首字母都大写;
注释是程序中辅助的内容是便于程序员之间的交流 它的特点是编译器不参与编译 分为单行注释和多行注释 单行注释用//表示
多行注释用/* */ 在当行注释中不能加回车 单行注释有一个快捷键(command+/) 多行注释是没有快捷键的;
单行注释可以嵌套多行注释但是必须在同一行 所以是没有意义的 多行注释可以嵌套单行注释 但是不能嵌套
多行注释;
不同的数据类型占用不同的存储空间
在64位编辑器中(ios开发中是64位编辑器):
char字符型:1个字节
short短整型:2个字节
int整型:4个字节
long长整型:8个字节
float实型单精度:4个字节
double双精度实型:8个字节
常量是表示固定不变的数据 它的分类和表示:
1.整型常量分为:
10进制整型常量如 23 20;
8进制整型常量以0零开头 如 045;
2进制整型常量以0零B/b开头 如0B11111111111111111111111111111111111111111111;
16进制整型常量0x开头 如0x438fa
2.实型(小数)常量分为:
单精度实型常量:是以f结尾 如2.3f;
双精度实型常量:如2.3(计算机中默认是双精度实型常量后面什么都不用加);
3.字符型常量是用单引号括起来的单个字符里面可以使字符 数字 符号 例如 'a' '3' '*' '&' 但是不能用‘ab’这是不合法的;
特殊的字符常量(转义字符)如‘/n’ '/t' '/r' '\\'等;
4.字符串常量是用双引号括起来的 如"abc" "**" "空格" ""中间什么都不加;
变量的定义:代表了内存的一个空间,用来存放经常变化的数据;
变量的两个要素分别是:变量名称 和 变量类型
变量的分类:全局变量和 局部变量;
变量的使用有两种方式:一种是像 int a 表示定义了一个类型为int类型的名称为a的单个变量
另一种是向int a,b,c表示定义了多个 类型为int类型的名称分别为a b c的多个变量
变量的命名规范:1.严格遵守标识符的命名规范 2、变量名不能重名 如上一行已经定义了int a,b 又在下一行定义一个int b,这是不合法的;
变量的初始化的意思就是给变量赋值一个初始值 它有多种方法如下
第一种:边定义变量边赋值 包括两种1.完全初始化: int num1=0,num2=0;表示定义了两个int类型的变量变量名称为num1和num2 且num1的值为0 num2的值为0
2.局部初始化:int num3=0,,num4;表示num3初始化为0了 而num4没有;
第二种:先定义变量后初始化 如 int num5,num6; num5=0;num6=0;
第三种:使用一个变量初始化了另外一个变量 如 int num7=num5;表示用num5的值给num7初始化;
第四种:给变量连续初始化 如int num8=num9=num10=10; 表示给num8 num9 num10都赋值等于10;
变量的使用:存值和取值
a=23;
int num11=a;表示先取出a的值23再 赋值23给num11;
printf ("a=%d,num11=%d\n,a,num11");表示在右下角控制台打印出a 和 num11的值;
变量使用的注意事项
=号的左侧必须是变量
=号的右侧可以是变量、常量、表达式 如int a=b或者10或者10+20;
作用域:可以理解为变量的可以使用的范围;
变量按照作用域分类:局部变量和全局变量;
局部变量:函数的内部或者代码块的内部定义的变量就称之为局部变量;
局部变量的作用域:是从局部变量定义的位置开始,到它所在的代码块或者函数体的 右括号 } 为止;例如
int main(){
{int age=0;
{ int age1=10;
}
}
}从main函数定义开始 到右括号结束 在{ }中间可以插入代码块 { } 在代码块的内部也可以嵌套代码块 如代码块int age就潜逃了一个代码块int age1 ;
注意:在代码块的内部还可以定义一个和块外部同名的变量,例如 我可以在int age这个外部块当中定义一个内部快int age 此时 块内部的会暂时屏蔽块外部的作用域或者说
让外部快的变量的作用域不起作用;
全局变量:是指在函数外部定义的变量;
全局变量的作用域:是从定义的位置开始,到文件的末尾,在不同的函数中都可以使用;
printf是c语言的标准的输出的库函数;
使用printf的时候,尽量包含一个头文件“stdio.h”(如果不包含,则会出现警告);
printf的使用格式:printf("格式控制字符串",变量列表);
格式控制符:
%d: 输出一个10进制的整数;%md问题:m表示域宽也可以理解为位数,可为正可为负 正表示左侧空格 负表示右侧空格;
%f 输出一个实数类型的数据;默认输出为6位小数 不足补零;如果只想打印两位小数 则在f前写入.2 就是printf("f1=%.2f",f1);
如果写成%d6.3f 其中6表示有6位数 .3表示是3位小数; 如果是%-6.3f表示位数不够的时候从右边空小数;如果不是负数而小数位不够就会从左边空格;
精度问题:float:%f打印出来后,精度小数位为6位 有效数字是7位 到第八位时就不精确了 如3.1415926有八位数字了 所以最后第八个数子就算打印出来也是无效数字;
double:双精度下有效位是15位 只要写 double d1=3.1415926;printf(d1=“%.7f”,d1);就可以打印出来了
%c 输出一个字符;
%s 输出一个字符串;
%o 输出一个八进制数;
%x 输出一个十六进制数;
%p 输出一个地址;
printf注意事项:1、%0md m还是域宽的意思 0表示的是在打印出来的数前加入的数 比如 00 01 02 03;
2、\n \t \\ %% \" \' 这些都分别表示转义字符 都可以打印出来 放在控制符的后面 如 printf(%d\t,10);
scanf输入格式:scanf(“%d%d”,&a,&b)&符号是表示从地址a和b中获取地址;
scanf的注意事项:1 scanf函数遇到回车的时候,会结束执行
2 接收当个变量值的时候,再输入值之前,如果我们输入了空格 回车 tab 都会被忽略;
3 %d%d表示输入两个十进制整数 中间不用逗号隔开 ;要求我们在键盘上输入的时候,输入两个整数
4 并且以空格或者回车隔开不能在中间使用逗号或者其他符号,如 12 34 ;当输入完一个数以后,如果中间添加了回车 空格 tab都会被忽略;
5 如果是多个格式控制符混合输入 是 如 scanf(“%d%c%d”,&a,&ch,&b)这是在%d%c%d的中间就必须加入逗号 而且再输入的时候也必须中间加逗号输入
否则输入会出错;
6 scanf(“%d%*d%d”,a,b,c)这个%*d表示这个数不会输入 会跳过;
scanf运行的原理:1.当用户输入内容以后,用户输入的内容会被存放到scanf的输入缓冲区中,然后,scanf函数会根据格式控制的字符的要求,送输入缓冲区一次取它想要的内容,
如果 从缓冲区中取得内容和我们的格式要求一致,则把值存放到变量中;如果格式不一致,则不修改变量的值;
2.如果scanf缓冲区中还有内容,则scanf不会提示我们再次输入 例如 :scanf(”%d%c%d“,&a,&ch,&b)加入你输入12 空格 a 空格 45 ;它会依次取值12 空格 和a 但是a是字符不是%d格式,
格式不相符就不会取值了;
int a=1 b=-1
char ch=‘a’
scanf("%d",&a);
scanf("%c",&ch);
scanf("%d",&b);
printf("%d,%c,%b",a,ch,b);
如果你想要输出a=12 ch为a b为45;这时候如果你直接输出三次 12 a b 不会显示出来因为scanf中的缓冲区中有五个中间包括了两个enter 如果想要按理想的输出三个数
可以在scanf("%c",&ch);下面再输入一次scanf("%c",&ch);这样scanf("%c",&ch)就会吸收掉中间的那个空格 b也会直接在缓冲区中找到45这个整数而忽略掉中间的那个空格;
|
|