C语言的一些基础知识
程序的基础框架和简单理解
#include<stdio.h> //编译预处理指令
int main() //程序的入口主函数main
{ //程序(函数、功能)开始标志
printf("Hello World!\n"); //要写的代码
return 0; //程序退出前返回给调用者(操作系统)的值
} //程序(函数、功能)开始标志
printf这个函数被定义在stdio.h头文件里面
#include<stdio.h>
其实就是把stdio.h里面的代码全部搬过来放上面
关于return 0
:一般时候操作系统运行程序后,程序要给操作系统一个“交待”
在cmd中运行上面的程序后,接着输入echo %errorlevel%
,就能看到一个“0”的值。
代码中的return 0也可以改成其它值,不影响代码的运行。这个值只是告诉操作系统,程序被正常运行了,会得到一个什么值。一般约定俗成的是,程序被正常运行后返回一个0的值。
变量
变量存储在内存中,程序终止关闭后,变量所占的空间会被释放掉。
变量的本质就是内存中一段存储空间。
四点要素:
- 变量名
- 由字母数字下划线组成,且只能以下划线或者字母开头,不能以数字开头。
- 区分大小写
- 驼峰命名法(例如:SecondsPerYear)
- 变量值
- 存储单元
- 类型
数据类型:
-
基本类型
-
整型类型
-
基本整型(int)(int data = 3)
-
短整型(short int)
-
长整型(long int)
-
双长整型(long long int)
-
字符型(char)(char data2 = ‘c’)
字符本质上与整数的存储方式相同。因为有一种规定叫ASCII,它规定了不同的字符是使用哪个整数值去表示。
‘A’ —— 65
‘B’ —— 66
‘a’ —— 97
‘b’ —— 98 -
布尔型(bool)
-
-
浮点类型
- 单精度浮点型(float)(float data3 = 3.2)
- 双精度浮点型(double)
- 复数浮点型(float_complex,double_comple,long long_comple)
-
-
枚举类型(enum)、空类型(void)
-
派生类型
- 指针类型(*)
- 数组类型([])
- 结构体类型(struct)
- 共用体类型(union)
- 函数类型
数据类型可以强制转换,如:
#include <stdio.h>
int main()
{
int data = 10;
int diviser = 3;
float result;
result = (float)data/diviser;//强制转换
printf("result = %f\n",result);
printf("result = %f\n",(float)data/diviser);
return 0;
}
运行结果:
result = 0.333333
result = 0.333333
printf函数
一般有四种用法:
-
printf(“字符串\n”);
-
printf(“输出控制符”,输出参数);
-
printf(“输出控制符1 输出控制符2 输出控制符3 ……”,输出参数1,输出参数2,输出参数3,……);
要注意“输出控制符”与“输出参数”必须一一对应。
-
print(“控制输出符 非输出控制符”,输出参数);
以"%"开头的就是输出控制符,有如下输出控制符:
- %d(十进制整数)
- %c(单个字符,只输出一个字母)
#include <stdio.h>
int main()
{
char c_data = '#';
printf("字符c_data = %c\n",c_data);
return 0;
}
-
%s(多个字符)
-
%f(小数,用来输出实数的时候,只能得到6位小数)
还可以写成
%m.nf
或者%.nf
的形式来对输出的数据进行限制(m表示要输出这个数的宽度,包括小数点)#include <stdio.h> int main(void) { float a = 123.456; printf("a = %f\n",a);//输出结果:a = 123.456001(单精度浮点数默认有6位小数,而且整个数据(包括整数位和小数位)的精确位只有6~7位) printf("\n"); printf("a = %.2f\n",a);//输出结果:a = 123.46(整数不限,保留两位小数) printf("a = %.5f\n",a);//输出结果:a = 123.45600(小数不足在后面补0) printf("\n"); printf("a = %1.1f\n",a);//输出结果:a = 123.5 printf("a = %2.1f\n",a);//输出结果:a = 123.5 printf("a = %3.1f\n",a);//输出结果:a = 123.5 printf("a = %4.1f\n",a);//输出结果:a = 123.5 printf("a = %5.1f\n",a);//输出结果:a = 123.5 printf("a = %6.1f\n",a);//输出结果:a = 123.5(123.5前面有一个空格) printf("a = %7.1f\n",a);//输出结果:a = 123.5(123.5前面有两个空格) printf("\n"); printf("a = %1.2f\n",a);//输出结果:a = 123.46 printf("a = %2.2f\n",a);//输出结果:a = 123.46 printf("a = %3.2f\n",a);//输出结果:a = 123.46 printf("a = %4.2f\n",a);//输出结果:a = 123.46 printf("a = %5.2f\n",a);//输出结果:a = 123.46 printf("a = %6.2f\n",a);//输出结果:a = 123.46 printf("a = %7.2f\n",a);//输出结果:a = 123.46(123.46前面有一个空格) printf("\n"); printf("a = %1.3f\n",a);//输出结果:a = 123.456 printf("a = %2.3f\n",a);//输出结果:a = 123.456 printf("a = %3.3f\n",a);//输出结果:a = 123.456 printf("a = %4.3f\n",a);//输出结果:a = 123.456 printf("a = %5.3f\n",a);//输出结果:a = 123.456 printf("a = %6.3f\n",a);//输出结果:a = 123.456 printf("a = %7.3f\n",a);//输出结果:a = 123.456 printf("\n"); printf("a = %1.4f\n",a);//输出结果:a = 123.4560 printf("a = %2.4f\n",a);//输出结果:a = 123.4560 printf("a = %3.4f\n",a);//输出结果:a = 123.4560 printf("a = %4.4f\n",a);//输出结果:a = 123.4560 printf("a = %5.4f\n",a);//输出结果:a = 123.4560 printf("a = %6.4f\n",a);//输出结果:a = 123.4560 printf("a = %7.4f\n",a);//输出结果:a = 123.4560 printf("\n"); printf("a = %1.5f\n",a);//输出结果:a = 123.45600 printf("a = %2.5f\n",a);//输出结果:a = 123.45600 printf("a = %3.5f\n",a);//输出结果:a = 123.45600 printf("a = %4.5f\n",a);//输出结果:a = 123.45600 printf("a = %5.5f\n",a);//输出结果:a = 123.45600 printf("a = %6.5f\n",a);//输出结果:a = 123.45600 printf("a = %7.5f\n",a);//输出结果:a = 123.45600 printf("\n"); printf("a = %1.6f\n",a);//输出结果:a = 123.456001 printf("a = %2.6f\n",a);//输出结果:a = 123.456001 printf("a = %3.6f\n",a);//输出结果:a = 123.456001 printf("a = %4.6f\n",a);//输出结果:a = 123.456001 printf("a = %5.6f\n",a);//输出结果:a = 123.456001 printf("a = %6.6f\n",a);//输出结果:a = 123.456001 printf("a = %7.6f\n",a);//输出结果:a = 123.456001 return 0; }
-
%x、%X、%#x、%#X(以16格式输出)
#include <stdio.h>
int main()
{
int a = 3;
printf("16进制输出a = %#X\n",a);//输出结果:16进制输出a = 0X3
return 0;
}
- %p(一般打印内存地址,也是16进制格式输出。用的时候输出列表中的数据前面要加&)
#include <stdio.h>
int main()
{
int a = 3;
printf("a数据的地址是:%p\n",&a);
return 0;
}
注释
在代码中,//
后面可以打注释。注释在编译预处理的时候,会被清除。
也可以在/*
和*/
之间打注释。