本文最后更新于:星期日, 四月 26日 2020, 9:57 上午
0 前言
絮叨絮叨,回想一下自上大学至今,已经学习计算机6年了,自己竟然没有很好的掌握住一门语言;隧近期准备重拾C,把学习过程中的笔记分享出来,也方便自己日后查看,下面开始保姆式学习。
代码都是在VS2019中敲的
VS2019下载,安装之前需要安装.NET Framework 4.8,安装没什么特殊要求,正常安装就好了。
1 主函数
#include <stdio.h>
#include <stdlib.h>
//C语言的两种标准主函数
//1.C99标准的主函数,初学
int main(void)
{
return 0;
}
//2.标准主函数,涉及到命令行参数时使用
int main(int argc, char *argv[])
{
return 0;
}
//3.C++标准主函数标准形式
int main(void)
{
return 0;
}
//return 0;程序正常结束
2 头文件
#include <stdio.h> //包含头文件,standard in out标准输入输出
#include <stdlib.h> //standard library标准库
//如何判断函数包含于哪个头文件,可百度也可选中函数右击使用转定义查看,或查看msdn
int main(void)
{
printf("hello word"); //printf函数在头文件stdio.h中
system("pause"); //system函数在头文件stdlib.h中
return 0;
}
3 内建函数
内建函数:编译器自带的函数,原本应该包含在头文件中,调用函数时应添加头文件,但是编译器如果内置了,则不加头文件也可直接使用函数,不报错。
//#include <stdio.h>
//#include <stdlib.h>
int main(void)
{
printf("hello word\nhello word\n"); // \n:转义字符,换行
system("pause");
return 0;
}
4 数据类型
/*
基本数据类型:数值类型【整形,浮点型】、字符型
构造类型:数组、结构体、联合、枚举
指针
整形(-2,-1,0,1,2)int,short,long,long long
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d\n", 12); //格式化输出符号 %d:转义字符 以十进制整数形式输出参数/数据
printf("我们的数:%d测试\n", 12);
printf("12 十进制:%d,\n12八进制:%o,\n 12 十六进制(小写):%x,\n 12 十六进制(大写):%X\n", 12,12,12,12);
system("pause");
return 0;
}
5 int类型变量的定义
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// 可以直接初始化赋值,也可以先不赋值
int a = 1234567890, b = 547383934;
int c;
c = 10;
int d;
//printf("%d\n", d);
d = a;
a = b = 10;
printf("%d,%d", a, c);
system("pause");
return 0;
}
6 变量与常量
/*
左值:变量
右值:常量
int表示数的范围(有符号):-2^31——2^31-1(-2147483648——2147483647)
字节是计算机常用的存储单位,但不是最小的,计算机最小的存储单位是位,1字节=8位(8个二进制位)
一个int类型数据占4个字节=32个二进制位
sizeof():得到类型的大小,eg:sizeof(类型:int or float) or sizeof(变量)
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a = 3; //最大是2147483647,若超出范围则变为负数,相当于是一个圈
int b, c, d;
int e, //注释说明变量含义
f, //注释说明变量含义
g, //注释说明变量含义
h; //注释说明变量含义
printf("%d\n", a);
printf("%d\n", sizeof(float));
system("pause");
return 0;
}
7 无符号整形
/*
无符号整形 unsigned int:0-2^32-1(0-4294967295),用%u转移,占用4个字节
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned int a = -1; //无符号整形
printf("%u\n", a); // %u:无符号十进制整形输出;out:4294967295
// %d:有符号十进制整形输出
unsigned int b = 1;
printf("%u\n", b); // out:1
system("pause");
return 0;
}
8 其他整形
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
short s; //短整形(short int)
s = 12;
printf("short占用字节数为:%d\n", sizeof(s));
//短整形(short)大小为2字节;不同系统大小不同,但是《c和指针》标准规定int型不小于short型,某些系统中int可能大小为2字节;
//有符号 signed short:-2^15——2^15-1(-32768-32767)
//无符号 unsigned short:0——2^16-1(0-65535)
//两种表示个数一样
printf("s=%hd\n", s);
//short型输出格式符为%hd,用%d也可
long l = 13;
printf("long占用字节数为:%d\n", sizeof(l));
//long int(长整形),可简写为long
//占用4字节存储空间,《c和指针》标准中规定long不小于int的长度即可
//有符号long(signed long)及无符号long(unsigned long)表示范围同int,输出格式符为 %ld 也可用 %d
printf("s=%ld\n", l);
long long ll = 15;
//long long是C99标准中扩展的新类型,VC++6.0中不支持此类型
//long long占用8字节
//无符号(unsigned long long int)0——2^64-1
//有符号(signed long long int)-2^63——2^63-1
//输出格式符:%lld
printf("long long占用字节数为:%d\n", sizeof(ll));
printf("ll=%lld", ll);
system("pause"); //卡住还可以用getchar(); or while(1);
return 0;
}
9 变量取地址
/*
C语言的优势就是通过地址可以操作内存空间
单位Bit——Kb——Mb——Gb
取地址符:&
表达式:&a、12+13、a都是表达式,每个表达式都有一个结果
语句:有分号的是语句
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a = 12;
printf("%p\n", &a); //%p就是以地址形式(16进制)输出,通常用16进制输出地址。
printf("%#p\n", &a);//%#p就是以地址形式输出,加上前缀0x
system("pause");
return 0;
}
10 sacnf & 变量的输入
#define _CRT_SECURE_NO_WARNINGS //宏需要加在最前才有效
#include <stdio.h>
#include <stdlib.h>
//#pragma warning(disable:警告码) 可去除相应的警告
int main(void)
{
int a;
scanf("%d", &a);
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a = 12;
printf("前 a=%d\n", a);
scanf_s("%d", &a); //一定要加取地址符&,否则会引起异常。
printf("后 a=%d\n", a);
int b = 1,
c = 2;
printf("前b=%d c=%d\n", b, c);
//输入前想加入输入提示,可以在前面加个printf()
scanf_s("%d,%d", &b, &c); //两个%d(转义字符)之间用什么隔开,输入时就用什么隔开(默认为空格)
printf("后b=%d c=%d\n", b, c);
system("pause");
return 0;
}
11 浮点型(float)
/*
精度的定义:第一个非零数到最后一位的个数,并非小数点后位数。
float:
表示数范围:(-3.40282e+038 ~ -1.17549e-038) 0.0 (+1.17549e-038 ~ +3.40282e+038)
标准规定:指数范围不小于-37~38
有效数位:6(标准规定为6)
double:
表示数范围: (-1.79769e+308 ~ -2.22507e-308) 0.0 (+2.22507e-308 ~ +1.79769e+308)
标准规定:指数范围不小于-37~38
有效数位:15(标准规定为10)
long double:同double
有效数位:18(标准规定为10)
*/
# include<stdio.h>
# include<stdlib.h>
int main(void)
{
float f = 123.45; // %f,占用4个字节,
double d = 12.123; // %lf,占用8个字节
long double ld=11.22 ; // %lf,占用内存空间不小于double型,不同编译器不同,但肯定是2的倍数
printf("%f,%lf,%lf\n", f, d, ld);
printf("%e,%e,%e\n", f, d, ld); // 科学计数法表示
system("pause");
return 0;
}
0和0.0是不同的
# include<stdio.h>
# include<stdlib.h>
# include<float.h>
int main(void)
{
printf("%e\n", 0); // out:8.280795e-305
printf("%e\n", 0.0); // out:0.000000e+00
printf("%e\n", FLT_MIN); //选中FLT_MIN右击选择转定义,可查看浮点型变量最大最小值
system("pause");
return 0;
}
12 浮点型的精度
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
float f = 2333.345678;
printf("%f\n", f); //out:2333.345703,float型有效数位为6,经测试本机为7位,只要大于等于标准就可
double d = 2333.3456789123412345;
printf("%.20lf\n", d); //out:2333.34567891234109993093,可见有效数位是16位,大于标准规定的10,即可
//由于 %f 和 %lf 可输出的小数位数是6个,所以要输出20位小数时要写为 %.20lf
double d2 = 2333.34;
printf("%.20lf\n", d2);//out:2333.34000000000014551915,
double d3 = 2333.34;
printf("%lf\n", d3);//out:2333.340000,6位
//在vs中,long double和double完全相同。不同编译器不同。
system("pause");
return 0;
}
本文作者:Darren
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!
本站支持评论邮件提醒功能,在邮箱输入框中留下你的邮箱,这样就能通过邮件收到回复!