c语言-数据类型(下)

发布时间:2024年01月16日

?

目录

?

4.实型变量

5.字符常量

直接常量:

转义字符:

6.字符变量

7.字符串常量

五、输出格式总结

整型:

浮点型:

字符及字符串:

指针(地址):

六、typedef

七、sizeof一个问题


?

4.实型变量

单精度float型:4字节,7位有效数字

双精度double型:8字节,16位有效数字

5.字符常量

直接常量:

????????????????? 用''单引号括起来('a','b'等)

? ? ? ? ? ? ? ? ? 因为计算机识别二进制,所以字符在计算机中以ASC II的形式存

????????????????? ‘a’表示取a的ASCII值

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	char ch = 'a';//字符变量ch存储的是‘a’的ASCII值
	printf("ch = %c\n",ch);//%c输出的是字符
	printf("ch = %d\n",ch);//%d输出的是字符的ASCII值

	ch = 97;//‘a’与97是完全等价的
	printf("ch = %c\n", ch);
	printf("ch = %d\n", ch);

	ch = ch + 1;
	printf("ch = %c\n", ch);
	printf("ch = %d\n", ch);
}

运行结果:

3900440dbd40464ea47a62c4e864b561.png

? ? ? ? ? ? ? ? ? ? 字符获取键盘输入:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	char ch;
	printf("请输入一个字符:");
	scanf("%c",&ch);
	//ch = getchar();//这两个都是只能提取一个字符,结果一样
	printf("ch = %c\n",ch);
	printf("ch = %d\n",ch);
}

运行结果:

60ecb3c3ba9c41c2bdffa6a651fa919c.png

案例:键盘输入abc,只取a和c

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	char ch1,ch2;
	printf("请输入abc:");

	ch1 = getchar();
	getchar();//取了字符但是没地方给,丢掉
	ch2 = getchar();

	printf("ch1 = %c\n",ch1);
	printf("ch2 = %c\n", ch2);
}

运行结果:

9ad53e74adf24008b420b256b5659289.png

转义字符:

??????????????????? 以\形式开头后面跟一个或几个字符

? ? ? ? ? ? ? ? ? ? \n换行,\t跳格(tab),\\一个反斜杠......

? ? ? ? ? ? ? ? ? ? %%才能输出一个%

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	printf("##%c##\n",'\\');
	printf("##%%##\n");

	char ch = '\0';
	printf("A:%d\n",'0');//取ASCII值
	printf("B:%d\n", '\0');
	printf("C:%d\n", 0);
	printf("D:%d\n", "0");//字符‘0’的地址
}

使用##来夹住%c以及%%,这样在##中间的值就是输出的内容

char清零严格上就要如上书写:'\0'等价于0

运行结果:

1593e4fdb98940199eae48c8a08b5a36.png

6.字符变量

用char形式定义,分配一个字节的内存空间,以ASCII码的形式存储

字符变量存储的是这个字符的ASCII值

字符常量直接常量的例子中有相关演示

7.字符串常量

1)用双引号括起来的字符序列

2)'a'是字符常量,占1字节,用ASCII码形式存储

“a”是字符串常量,占2字节,以首地址存储

为什么占2个字节,因为每个字符串结尾都会自动加上一个\0结束标志

3)%s输出字符串类型,会从首元素开始输出字符直至遇到\0

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	printf("%s\n","hello");//%s输出字符串类型
	printf("%d\n",sizeof("hello"));//系统会在字符串末尾自动加一个\0
	printf("%s\n","hello world");
	printf("%s\n", "hello\0world");//%s从字符串首元素逐个输出,直至遇到'\0'
	printf("##%s##\n", "\0hello\0world");
}

运行结果:

e2b3dce63cf94688aa6967327318f8da.png

五、输出格式总结

整型:

??? %d? 十进制有符号整数????? %u? 十进制无符号整数

?? ?%x 以十六进制表示的整数? %o? 以八进制表示的整数?

??? %ld是有符号long型,%lu是无符号longxing

??? %hd是有符号short型,%hu是无符号short型

浮点型:

?? ?%f? float型浮点数?? ??? ?? %lf double型浮点数???? %e? 指数形式的浮点数?

字符及字符串:

??? %c? 单个字符???????????????????????????????????? %s? 字符串

指针(地址):

??? %p指针的值

还可以控制输出的位数和格式

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	printf("##############\n");
	printf("##%5d##\n",123);//占5个终端位宽,右对齐
	printf("##%-5d##\n", 123);//占5个终端位宽,左对齐
	printf("##%05d##\n", 123); //占5个终端位宽,右对齐,不足补0
	printf("##%-05d##\n", 123); 
	//不能这样写。结果没变化,因为假如结果为1,00加到左边没变化为001,00加到右边,数值就变了是100
	printf("##%5.2f##\n", 3.14159f);//5表示总位宽为5,.2表示小数位保留两位
}

运行结果:

849c5ac33b8d48b58afa59e7f2c16271.png

六、typedef

1.为已有类型取个别名

2.一定要按照以下步骤进行,不然容易写错

1)用已有类型定义一个变量

2)用别名替换变量名

3)在整个表达式的前方加上typedef

1.

1)int a

2)? int INT32

3)? typedef int INT32

2.

1)? int arr[5]

2)? int ARR[5]

3)? typedef int ARR[5]

七、sizeof一个问题

sizeof测类型,跟变量就是测变量类型,跟常量就是系统认为的这个常量的类型

sizeof('a')是4个字节

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char* argv[]) {
	char ch = 'a';
	printf("%d\n", sizeof('a'));
	printf("%d\n", sizeof(char));
}

运行结果:

33fac01c2b9b48299dbd78447b6b05e8.png

?

?

文章来源:https://blog.csdn.net/m0_73885339/article/details/135603777
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。