目录
?
单精度float型:4字节,7位有效数字
双精度double型:8字节,16位有效数字
????????????????? 用''单引号括起来('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);
}
运行结果:
? ? ? ? ? ? ? ? ? ? 字符获取键盘输入:
#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);
}
运行结果:
案例:键盘输入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);
}
运行结果:
??????????????????? 以\形式开头后面跟一个或几个字符
? ? ? ? ? ? ? ? ? ? \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
运行结果:
用char形式定义,分配一个字节的内存空间,以ASCII码的形式存储
字符变量存储的是这个字符的ASCII值
字符常量直接常量的例子中有相关演示
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");
}
运行结果:
??? %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表示小数位保留两位
}
运行结果:
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('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));
}
运行结果:
?
?