c语言-数据类型(下)

 

目录

 

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

 

 

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值