构建新文件名称命名和路径创建都不能含有中文和空格
c语言程序由函数组成
c语言程序启动时,系统会自动调用名称叫做main的函数
c语言规定函数定义的固定格式
int main(){return 0;}
c语言中定义其他函数的格式和main函数一样,只不过函数名称不能相同
执行c语言调用main函数,其他函数不能被调用,要想调用其他函数可以通过mian函数来调用eg:main(){call();return 0;}
所有的c语言代码都要写到.c为扩展名的文件当中
函数后面跟括号(),{}里面是函数的管辖范围
printf()函数往屏幕上输出内容
由于printf不是我们定义的,所以还需通过 #include <stdio.h> 告诉c语言程序从哪里调用函数
/n 表示换行
公司的代码规范中会规定阅读性优先还是性能优先
第一种实现方式是阅读性优先
第二种实现方式是性能优先
一般情况下为了方便同事之间沟通和提升代码的可维护性都是阅读性优先
初学者在编写代码时尽量以阅读性优先的方式来编写
c语言中,每条完整语句后面都必须以分号结尾
除了注释和双引号以外的地方不能出现中文
c语言中必须有一个main函数
c语言中有且只能有一个main函数
标准的推行需要各大厂商的支持和实施,由于各大厂商利益,理解等问题,导致了实施结果发生了变化(main函数有多种写法)
main()
int main()
void main()
单行注释格式://
单行注释有效范围:
从第二个斜杠到这一行的末尾
多行注释格式:/* */
多行注释有效范围:
从第一颗星直到第二颗星之间
编译器在编译代码时不会将注释的内容编译成0和1
单行注释可以嵌套单行注释
多行注释可以嵌套单行注释
单行注释可以嵌套多行注释,但是被嵌套的多行注释必须在同一行
多行注释不能嵌套多行注释
程序员的良好习惯:先写注释再写代码(代码仅仅只是思想的一种体现形式而已)
关键字:32个 全部是小写 在开发工具中会显示特殊颜色
关键字在c语言中有特殊含义,所以不能用作变量名和函数名
标识符:程序员在程序中给函数,变量等起的名字
标识符命名规则
只能由字母,数字,下划线组成
不能包含除下划线以外的其他特殊字符串
不能以数字开头
不能是c语言中的关键字
标识符命名规范:见名知意,驼峰命名法(第一个单词以小写字母开始,第二个单词的首字母大写)
标识符严格区分大小写,text和Text是两个不同的标识符
数据分为静态数据和动态数据
c语言中有4大类数据类型:基本类型,构造类型,指针类型,空类型
整型常量
实型常量(小数) 单精度/双精度,默认情况下所有的实型常量都是双精度
要想使小数单精度,在后面加上f/F
字符型常量 字符型常量的单引号中只能放一个字符(一个汉字通常会占好几个字符)
特殊情况:/n /t (转移字符)
字符串型常量 双引号里面可以放多个字符
在c语言当中表达一个小数,如果小数没有整数部分,整数部分可以省略
定义变量的格式:数据类型 变量名称
为什么要指定数据类型 为了告诉操作系统,定义的变量对应的储存空间中,将来能够储存什么样的数据类型
为了告诉操作系统需要分配多大的存储空间
为什么要指定变量名称 为了我们将来能够找到开辟好的存储空间,使用这块存储空间
0 bit
00000000 byte(字节) kb m gb
1.定义变量
2.使用变量 第一次给变量赋值,我们称之为初始化,
在c语言中,想要使用变量,必须先给变量初始化,
如果变量没有被初始化,那么变量中保存的都是一些垃圾数据..
获取变量printf("num = %i/n",num)
在代码里定义了int num=0 int a=2 int b=3
num=a+b
要求输出格式为num=运算结果
就用下面的格式
获取变量printf("num = %i/n",num)
同时定义多个变量必须是相同类型的变量
先定义再初始化 定义的同时初始化 完全初始化 部分初始化
局部变量:定义在大括号中的变量 作用域:从定义变量的那一行开始,直到遇到return(是结束函数)或者遇到}结束为止
在同一个作用于范围内,不能出现相同名称的变量,
如果出现相同名称都得局部变量,必须在不同的作用域范围内
全局变量:定义在大括号外的变量 作用域:从定义变量的那一行开始,直到文件末尾
在同一个作用于范围内,可以出现相同名称的变量
变量只能在作用域范围内使用,超出作用范围就不能使用了
Ctrl+/ 集体注释
printf作用:把指定的数据显示到屏幕上
printf格式:printf("输出的内容") printf("格式化字符串",输出列表项)
格式化字符串格式:%[标志][输出宽度][.精度][长度]类型
输出整型常量和变量
the num = 666
printf("%i
",num);
printf("%i
",777);
printf("%d
",num);
printf("%d
",777);
输出实型常量和变量
float fvalue = 1.11F;
double dvalue = 2.22:
printf("%f
",fvalue);
printf("%lf
",dvalue);
printf("%f
",3.33F);
printf("%lf
",4.44)
输出字符型常量和变量
char ch = 'a';
printf("%c
",ch);
printf("%c
",b)
宽度格式;%[输出宽度]类型
宽度作用;指定输出内容的位数
如果输出内容实际的宽度大于或者等于指定的宽度,那么会按照实际输出内容的宽度输出
如果输出内容实际的宽度小于指定的宽度,那么会在实际输出内容的前面添加空格
int num = 999;
printf("|%i|
",num);
printf("|%1i|
",num);
printf("|%3i|
",num);
printf("|%5i|
",num);
标志格式:%[标志]类型 %[标志][输出宽度]类型
- 当输出值为正数时,在输出值前面加上一个+号,默认不显示
int num = 999;
printf("%+i ",num)
空格 输出值为正数时,在输出值前面加上空格,为负数时加上负号
标志作用: - 左对齐,默认右对齐
0 右对齐,用0填充宽度(默认用空格填充) 当输出宽度大于实际宽度位数不够用0填充
精度格式:%[.精度]类型
精度作用:指定输出小数保留的位数
注意点:单精度的小数,有效位数只有6-7位,超出了有效位数之后输出的位数之后输出的就是垃圾数据
有效位数是从小数点前面开始计算
float fValue = 1.234567890123456789F;
printf("%f
",fValue);
printf("%.2f
",fValue);
printf("%.10f
",fValue);
双精度的小数,有效位数只有15-16位,超出了有效位数之后输出的位数之后输出的就是垃圾数据
double dValue = 1.234567890123456789F;
printf("%.10lf
",dValue);
精度其他格式:%[.]类型
printf("%.lf
",5,dValue); 保留5位小数
scanf作用:接收键盘输入的内容
scanf格式:scanf("格式化字符串",地址列表)
&取地址符号 &变量名称 可以和获取变量对应的内存地址
int num
scanf("%i",&num)
printf("num = %i",&num)
float fValue;
scanf("%f",&fValue)
printf("fValue = %f
",fValue)
double dValue;
scanf("%lf",&dValue)
printf("dValue = %lf
",dValue)
char ch;
scanf("%c",&ch)
printf("ch = %c
",ch)
scanf注意点:scanf函数的第二个参数,只能接收变量地址,不能接收变量名称
如果接收的不是字符类型的数据,那么输入的空格,TAB,回车都会被忽略
函数的格式化字符串不能以
结尾,如果以
结尾,那么scanf函数永远无法结束
int num
scanf("%i
",&num)
printf("num = %i",&num)
scanf函数的格式化字符串中如果出了格式化字符串还有别的字符串,那么必须原样输入,否则接收的数据就不对
int num = 998
int value = 668
printf("%i,%i
",num,value)
int num = 998
int value = 668
printf("%i,%i",&num,&value)
scanf函数如果需要同时接收多个非字符类型的数据,可以通过空格,TAB,回车作为分隔符
printf("%i,%i",&num,&value) ,便于区分
scanf函数会先从缓冲区中获取数据,如果输入缓冲区中没有数据,那么程序就会阻塞,等待用户输入数据
如果用户输入数据,scanf函数会将用户输入的数据放到输入缓冲区中,然后再从输入缓冲区中获取数据
如果输入缓冲区中已经有数据了,那么就不会要求用户输入数据,会直接从输入缓冲区中获取数据
fflush(stdin) setbuf(stdin,NULL) 清空缓冲区(每次遇到scanf函数需要重新输入),清除隐藏的bug
c语言中,运算符优先级从高到低执行,相同优先级的运算符,运算次序按照结合性规定的方向执行
结合性:从左往右或者从右往左
什么是算数运算符:+ - * / %
注意点:在加减乘除运算中,如果整数和整数运算,那么得到的结果一定是整数,如果整数和小数运算,那么运算结果一定是小数
10 / 3 = 3 10 / 3.0 = 3.33333
在%运算中,不能出现小数(%运算只能计算整数)
如果被除数小于除数,那么结果就是被除数
结果的正负性,取决于被除数的正负性(被除数如果正数,那么结果就是正数,被除数如果是负数,那么结果就是负数)
int在运算中占4个字节 double在运算中占8个字节
类型转换
自动类型转换 算数类型转换
在c语言中不同类型的数据,是不能进行运算的
当编译器发现不同类型的数据要进行运算时,会自动将小类型转换为大类型