01数据类型与基础知识

文章介绍了C语言中的基本数据类型,包括char、short、int、long、float和double,并展示了如何使用`printf`函数进行输出。此外,还讨论了C语言中字符串的处理,强调C语言没有原生的字符串类型,而是通过字符指针或字符数组实现。文章还涵盖了常量、变量的概念,以及局部变量和全局变量的区别和作用范围。最后,提到了ASCII值和转义字符在字符串中的应用。

数据类型

//包含一个叫stdio.h的文件
#include <stdio.h>

//c语言中数据的输出格式
//%d - 打印整型
//%c - 打印字符
//%f - 打印浮点数(float)
//%lf - 打印浮点数(double)
//%p - 以地址的形式打印
//%x - 打印16进制数字
//%o ...


int main()
{
	//char ch = 'A';
	//printf("%c\n",ch);//%c -- 打印字符格式的数据

	//short int - 短整型
	//int 整型
	//int age = 20;
	//printf("%d\n", age);//%d -- 打印整型格式的数据

	////long 长整型
	//long num = 100;
	//printf("%d\n", num);

	/*float f = 5.0;
	printf("%f\n", f);*/

	double d = 3.14;
	printf("%lf\n", d);

	return 0;
}

////int表示main函数返回一个整型值
//int main() //主函数-程序的入口-main函数有且仅有一个
//{
//	//库函数-C语言本身提供的函数
//	//别人的东西-打招呼
//	//#include
//	printf("hello world! \n");
//	return 0;
//}

数据类型的大小

int main()
{
	printf("%d\n", sizeof(char)); //1
	printf("%d\n", sizeof(short)); //2
	printf("%d\n", sizeof(int)); //4
	printf("%d\n", sizeof(long)); //4
	printf("%d\n", sizeof(long long)); //8
	printf("%d\n", sizeof(float)); //4
	printf("%d\n", sizeof(double)); //8

	short int age = 20;//2B 16bit 2^16-1 = 65535
	int age;//4
	return 0;
}

c语言有字符串类型吗?

答:c语言没有原生字符串类型string,c语言中字符串是通过字符指针来间接实现的。

int main()
{
        char *p="major";    //字符串
        char a[]="major";    //字符数组
        printf("p=%s.\n",p);
        printf("a=%s.\n",a);
        return 0;
}

常量和变量

局部变量和全局变量

int a = 100;

int main()
{
	int a = 10;
	//局部变量和全局变量的名字建议不要相同-容易误会,产生bug
	//当局部变量和全局变量的名字相同时,局部变量优先
	printf("%d\n", a); //10
	return 0;
}

全局变量的作用范围:

整个工程。

1.同一文件中:

int global = 2023;

void test()
{
	printf("test()-- %d\n", global);
}

int main()
{
	test();
	printf("%d\n", global);
	return 0;
}

2.不同文件:

sum.c

int g_val = 10;

test.c

int main()
{
	//未声明的标识符
	//声明extern外部符号的
	extern int g_val;
	printf("g_val=%d\n", g_val);
	return 0;
}

变量的生命周期

局部变量:

int main()
{
	//局部变量的生命周期:进{ 开始,出 }结束(作用域)
	{
		int a = 10;
		printf("a = %d\n", a);//ok
	}
	//printf("a = %d\n", a);//error
	return 0;
}

全局变量的生命周期是:整个程序的生命周期。

计算两个数的和

int main()
{
	//计算两个数的和
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	//输入数据-使用输入函数scanf
	scanf_s("%d%d", &num1, &num2);//&-取地址符号
	//int sum = 0;//c语言语法规定,变量要定义在当前代码块的最前面
	sum = num1 + num2;
	printf("sum=%d\n", sum);
	return 0;
}

四种类型的常量

常量的定义:

  1. 字面常量
  2. const修饰的常变量
  3. #define定义的标识符常量
  4. 枚举常量
//4.枚举常量
//枚举-一一列举
//性别:男,女,保密
//颜色:红,黄,蓝
//星期:1,2,3,4,5,6,7

//枚举关键字 - enum

enum Sex
{
	MALE,
	FEMALE,
	SECRET
};

//MALE,FEMALE,SCRET - 枚举常量
int main()
{
	enum Sex s = FEMALE;
	s = MALE;
	//MALE = 6; //常量值不能修改
	printf("%d\n", MALE); //0
	printf("%d\n", FEMALE); //1
	printf("%d\n", SECRET); //2
}

////3. #define 定义的标识符常量
//#define MAX 10
//
//int main()
//{
//	int arr[MAX] = { 0 };
//	printf("%d\n", MAX);
//	return 0;
//}

//int main()
//{
//	//2.const - 常属性
//
//	const int n = 10; //n是变量,但具有常属性,所以n是常变量
//	//int arr[n] = { 0 };
//
//	////const修饰的常变量
//	//const int num = 4;
//	//printf("%d\n", num);
//	////num = 8;//改不了了
//	//printf("%d\n", num);
//
//	//1.字面常量
//	//3;
//	//100;
//	//3.14;
//
//	return 0;
//}

//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	int sum = 0;
//	//scanf
//	//strcpy
//	//strlen
//	//strcat
//	//...
//	//不安全的
//	//strcpy_s
//	//...
//	scanf("%d%d", &num1, &num2);
//	sum = num1 + num2;
//	printf("sum=%d\n", sum);
//	return 0;
//}

字符串类型

int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c' };
	char arr3[] = { 'a','b','c','\0'};
	//strlen - string length 计算字符串长度
	printf("%d\n", strlen(arr1)); //3
	printf("%d\n", strlen(arr2)); //随机值 - 直到找到\0才停止
	printf("%d\n", strlen(arr3)); //3
	return 0;
}

////字符串类型
//int main()
//{
//	//数据在计算机上存储的时候,存储的是二进制
//	//@#$%...
//	//A - 65
//	//a - 97
//	//...
//	//ASCII编码
//	//ASCII码值
//	char arr1[] = "abc";//数组
//	//"abc" -- 'a' 'b' 'c' '\0' -- '\0'是字符串的结束标志
//	//char arr2[] = { 'a','b','c' };
//	char arr2[] = { 'a','b','c',0 };
//	//'\0' - 0
//	//'a' - 97
//	//'a' 'b' 'c'
//	printf("%s\n", arr1); //abc
//	//printf("%s\n", arr2); //abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫泰,续
//	printf("%s\n", arr2); //abc
//	return 0;
//}

注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。

转义字符

转义字符释义
"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\f进制符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。如:\130 X
\xdddd表示2个十六进制数字。如:\x30 0
#include<string.h>

int main()
{
	printf("%d\n", strlen("d:\test\32\test.c")); //13
	//\32 -- 32是2个8进制数字
	//32作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符
	//32 --> 十进制 26(3*8^1+2*8^0) --> 作为ASCII码值代表的字符
	printf("%c\n", '\32');/**/
	printf("%c\n", '\130');//X
	printf("%c\n", '\x30');//0
	printf("%c\n", '\x61');//a
	return 0;
}

//int main()
//{
//	//使用\转义
//	//printf("%c\n", '\'');
//	printf("%s\n","\"");
//	return 0;
//}

//int main()
//{
//	//\t - 水平制表符
//	printf("d:\test\32\test.c\n"); 
//	printf("d:\\test\\32\\test.c\n"); 
//	return 0;
//}

常见ASCII值

字符ASCII码值
048
A65
a97

配套C语言视频资源:1.初识C语言(1)(C语言程序设计教程谭浩强 c语言谭浩强视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语哔哩哔哩bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值