目录
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);
}
运行结果:
字符获取键盘输入:
#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
运行结果:
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"));//系统会在字符串末尾自动加一个\0printf("%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个终端位宽,右对齐,不足补0printf("##%-05d##\n", 123); //不能这样写。结果没变化,因为假如结果为1,00加到左边没变化为001,00加到右边,数值就变了是100printf("##%5.2f##\n", 3.14159f);//5表示总位宽为5,.2表示小数位保留两位
}
运行结果:
六、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));
}
运行结果: