C语言入门笔记 第一讲
一、我的第一个C语言程序
#include<stdio.h>
#pragma warning(disable:4996)
// int是整型的意思
//main前面的int表示main函数调用返回一个整型值
//void main()是过时的写法
int num2 = 20;//全局变量--定义在代码块({})之外的变量
int a = 100;//全局变量a
int main() {
//主函数,程序的入口,有且仅有一个。从这里开始执行,不能没有他。按F10开始执行,按一下F10,执行一条语句
//这里完成任务
//在屏幕上输出hello world
//函数-printf-打印函数
//库函数-C语言本身提供给我们使用的函数-使用需要打招呼-#include<stdio.h>
//std:标准 io:input&output .h:head,头文件后缀
printf("hello world\n");
//char 字符类型
char ch = 'A';//向计算机内存申请一块空间。存放一个字符A
printf("%c\n",ch);//%c -- 打印字符格式的数据
int age = 20;
printf("%d\n", age);//%d -- 打印整型十进制数据
float f = 5.0;
printf("%f\n", f);
double d = 3.14;
printf("%lf\n", d);
printf("char:%d(数字代表字节数)\n", sizeof(char));
printf("int:%d\n",sizeof(int));
printf("short:%d\n",sizeof(short));
printf("long:%d\n",sizeof(long));
printf("long long:%d\n", sizeof(long long));
printf("float:%d\n", sizeof(float));
printf("double:%d\n", sizeof(double));
short age2 = 20;//向内存申请2个字节=16个bit位,用来存放20这个数
float weight = 95.6f;//向内存申请4个字节存放小数,后面加f意思是申明它是一个单精度浮点类型,因为默认是double-双精度浮点类型
int num1 = 20;//局部变量--定义在代码块之内的变量
int a = 10;//局部变量a
printf("%d\n", a);//全局变量a和局部变量a可以共存--但打印出来的是局部变量a
//局部变量和全局变量名字不建议相同
int numb1 = 1;
int numb2 = 2;
//输入数据-使用输入函数scanf
scanf("%d%d", &numb1, &numb2);
//取地址符号&
int sum = 0;
sum = numb1 + numb2;
printf("sum = %d\n", sum);
return 0;//返回0
}
二、数据类型
1.char:字符数据类型
2.short int:短整型
3.int:整型
4.long int:长整型
5.long long int:更长的整型
6.float:单精度浮点数
7.double:双精度浮点数
%d -- 打印整型
%c -- 打印字符
%f -- 打印浮点数,打印小数
%p -- 以地址的形式打印
%x -- 打印16进制的数字
计算机中的单位
bit - 比特位
计算机是硬件 -- 通电
正电:1 负电:0
要存一个1或者一个0:开辟一个空间 这个空间大小就是一个bit位,也叫二进制
byte:字节
一个字节是8个bit位
如10110011
是一个字节
一个字节=8个比特位的大小
1k byte = 1024b
m byte
g byte
t byte
p byte
数字代表能表示的字节数:
char:1
int:4
short:2
long:4
long long:8
float:4
double:8
以int为例,int可表示4个字节的数,而一个字节是8位,所以int可表示32个二进制位的数,即2的32次方个数
所以int可表示的数据范围为:0~2^32-1
short int可表示的数据范围为:0~2^16-1 (0~65535)
假如要表示年龄,则用short age更合适,更节省空间
三、变量
全局变量--定义在代码块({})之外的变量
局部变量--定义在代码块({})之内的变量
int b = 20;//全局变量
int main(){
{
int a = 10;//这个a是属于这个大括号内的局部变量,只能在大括号内使用
}
printf("%d\n",a);//这样就会报错,因为没有声明这个变量a,而是在上面的代码块里声明的
printf("%d\n",b);//不会报错,因为b是全局变量
return 0;
}
tips:
全局变量a和局部变量a可以共存--但打印出来的是局部变量a
局部变量和全局变量名字不建议相同
四(番外)、scanf函数
scanf("%d%d",&a,&b);
&为取址运算符
int numb1 = 1;
int numb2 = 2;
//输入数据-使用输入函数scanf
scanf("%d%d", &numb1, &numb2);
//取地址符号&
int sum = 0;
sum = numb1 + numb2;
printf("sum = %d\n", sum);
这样的话会报错:返回值被忽略: “scanf”
原因:是因为微软认为scanf不安全导致的。
解决方法:在程序开头加上:#pragma warning(disable:4996)
还可以使用微软的编译器,将scanf改成scanf_s即可。
五、变量的作用域和生命周期
作用域(scope)
一个变量可以用的范围。
1.局部变量是在大括号内,全局变量是整个工程
2.全局变量在同一工程的其他源文件下定义,可在本源文件下使用
生命周期
1.局部变量的生命周期是:进入作用于开始,出作用域结束
2.全局变量的生命周期是:整个程序的生命周期
本文是C语言入门笔记第一讲,涵盖第一个C语言程序、数据类型(如char、int等)及计算机单位,介绍变量(全局与局部),提及scanf函数使用问题及解决办法,还阐述了变量的作用域(局部在大括号内、全局为整个工程)和生命周期(局部进出作用域、全局为程序全程)。
642





