C语言中sizeof是一个运算符,也是关键字。但不是函数。
C语言getchar()防止程序一闪而退
#include
int main(){
int a;
scanf("%d\n",&a);
printf("%d\n",a);
getchar();
getchar();
}
//第一个getchar()读取换行符,第二个getchar()让程序暂停,等待输入。
变量和常量
常量:预先设定好,在程序运行期间不会改变的值。定义常量的两种方式#define PI 3.14
const float pi 3.14
变量:在程序运行期间,有可能被改变或被赋值。
C语言数据类型关键字
K&C给出7个与类型相关的关键字。C90标准添加了2个关键字。C99标准添加了3个关键字。
C语言整数和浮点数
整数:整数是没有小数部分的数。例如:2,-23 ,100
浮点数:有小数点的数值。例如:2.75,3.16E7,7.00,2e-8
整数没有小数部分,浮点数有小数部分。
浮点数表示的范围比整数大。
浮点数运算会损失精度
浮点数是近似值
C语言变量初始化
C语言int类型常量
int常量: 21,32,14,94都是整型常量或整型字面量
显示8进制16进制
%o显示8进制 %x显示16进制
显示【0,0x ,0X】前缀。使用%#o显示8进制,%#x , %#X显示16进制
8进制和16进制的常量被视为int类型。如果值太大编译器会尝试使用unsigned int
C语言提供3个修饰基本类型关键字:short ,long , unsigned
C语言short类型可能比int类型占用的空间少?
C语言规定:short占用的空间不能多于int
C语言long占用的空间可能比int多?
C语言规定:long占用的空间不能少于int
C语言整型溢出
#include
int main(){
int i=2147483647;
unsigned int j = 4294967295;
printf("%d %d %d", i,i+1,i+2);
printf("%u %u %u", j,j+1,j+2);
return 0;
}
//2147483647 -2147483648 -2147483647
//4294967295 0 1
当达到表示的最大值时,会重新从起点开始。在超过最大值时,unsigned int 类型的变量从0开始。signed int 从-2147483648开始
C语言打印short,long,long long, unsigned类型
在o,x 前面可以使用l 。%lo 8进制打印long。%lx 16进制打印 long
%hd 10进制打印short,%ho 8进制打印short 。%hx 16进制打印short。
C语言字符类型char
标准的ASCII码范围是0~127。只需要7位存储。char类型是8位
字符型实际上是以数值形式存储的。
C语言中将char型常量视为int 而非 char
char a='RUMENZ'; 实际上 a='Z';
字符4的ASCII码是52,'4'表示的是字符4 。
C语言打印字符的3种表示方式
char a=7; 数值表示
char a='\a'; 转义
char a='\007'; 8进制。可以省略前面的0,='\07' ='\7'编译器将识别为8进制。C90开始可以使用16进制表示了。
如果编译器不识别转义序列【如:报警a】,可以使用ASCII码。char a='\a'; ==>char a='\007'; 无论是普通字符还是转义序列,就无需使用单引号括起来。
char a='a';
printf("\a\n");//不用单引号 转义序列
printf("\007\n");//不用单引号
C99添加了_Bool类型 0标识false 1表示true
C99添加可移植类型,stdint.h和inttypes.h
C语言float double和long double
C语言规定,float类型必须至少表示6位有效数字。如: float 必须能表示22.2222222222的前6位数字,而不是小数点后6位
double 类型至少有13位有效数字
默认情况下浮点型常量,编译器默认为double类型。
float rumen=2.3*4.0; //2.3和4.0默认为double类型,使用双精度运算,结果截取为float,精度提高,但是运算速度会受到影响。
C99标准添加了用16进制表示浮点型常量。0xa.1fp10 == 10+1/16+15/16*16 用p和P代替e E
float和double的精度是由尾数的位数来决定的
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字。为什么是6~7位。参照 C语言float的精度为什么是6~7位
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
C中各种类型的最大值最小值常量定义在"limits.h"和"float.h"中。
C语言基本类型11个关键字。
char shor int long float doublesigned unsigned_Bool _Complex _Imaginarg
sizeof运算符。C99和C11提供了 %zd打印sizeof 返回类型。不支持C99和C11的编译器可以用%u %lu代替
C语言使用数据类型
int cont=12.99; //使用double 给int赋值会直接舍去小数部分,不会进行四舍五入。
printf刷新输出
从缓冲区把数据发送到文件或者屏幕叫做刷新输出。
刷新输出:当缓冲区满,遇到换行符,需要输入的时候
强制刷新 fflush();