二、基本数据类型
1.常量
-
整型常量和浮点型常量
整型 : 123 125 0x5a
浮点型 : 3.24 3.14e5 3.14E-5 -
字符型常量和字符串型常量
字符 :‘a’ ‘\n’ …
字符串 :‘adad’ ‘hello!’
2.变量
- int a; 此语句的含义为 : 在内存中开辟一块区域,占4个字节,这块区域名称为a。 其数值大小范围是 -2^31 -1 ------ 2 ^31 - 1
- unsigned int a ;含义为:定义无符号的整型变量a。占4个字节,一个字节8位,共32位,其数值大小范围为 0 ------ 2^32-1
- float a; 含义为: 定义浮点型变量 占4个字节。
- double a; 含义为:定义双精度浮点型变量,占8个字节。
- long double a;含义为: 定义长双精度浮点型变量,占12字节。
- 以上定义的意思均为在内存中开辟连续的一块内存。
3.负数的存储方式(以-3位例)
32位中,有符号的第一位即最高位为符号位。 负数为1 正数为0
- -3的二进制的原码可以表示为:1 000 0000 0000 0000 0000 0000 0000 0011
原码转换为反码,符号位不变,其余位按位取反。 - -3的二进制的反码可以表示为:1 111 1111 1111 1111 1111 1111 1111 1100
补码为反码的基础上+1。负数在内存中的存储是以补码的形式存储的。 - -3的二进制的补码可以表示为: 1 111 1111 1111 1111 1111 1111 1111 1101
三、格式化IO
1.格式化输出—把某个变量的值以某种格式输出(屏幕、文件、内存)
#include <stdio.h>
int printf(const char *format, ...);//输出到标准输出的屏幕中
int fprintf(FILE *stream, const char *format, ...);//输出到某文件中
int sprintf(char *str, const char *format, ...);//输出到某块内存中
int snprintf(char *str, size_t size, const char *format, ...);
以printf为例:printf(“%d”,a);//将a的值以有符号十进制数输出
%f ------------- 十进制计数法的浮点数输出
%x ------------- 无符号十六进制整数输出
%d ------------- 有符号十进制整数输出
%o ------------- 无符号八进制整数输出
%u ------------- 无符号十进制整数输出
%e ------------- E-计数法的浮点数输出
%c ------------- 一个字符输出
%s ------------- 字符串输出
%p ------------- 指针输出
2.格式化输入—从键盘、文件、内存中以某种格式接收输入,存入某个地方
#include <stdio.h>
int scanf(const char *format, ...);//----返回值是整数,表示拿到了多少个符合格式的数据
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
使用scanf()函数注意事项:
1、scanf()函数使用的转换说明符跟printf()函数几乎相同,唯一区别的是前者用%lf来说明double型数据,而不是跟float型数据一样都是用%f.
2、scanf()函数使用“空白符”来决定怎样把输入分成几个字段。它依次把转换说明与字段相匹配,并跳过它们之间的空格(当格式控制符为%c时例外)。
3、当scanf()遇到不匹配数据类型的数据时,ANSI C要求函数在第一个出错的地方停止读取输入。
3、如果该函数使用%s转换说明符,那么除“空白符”以外的字符都是可以接受的,换句话说%s用于读取单个单词。
四、运算符、表达式和语句
下章分析
以上内容纯属个人观点,如有错误,欢迎纠正。