多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 支持的类型 ![](https://box.kancloud.cn/116e6c94f7b0fa0922fad8f827286711_939x401.png) ~~~ char 1个字节 short 2个字节 int 4个字节 float 4字节 double 8个字节 long windows 4字节,linux 32位 4字节, 64位 8字节 ~~~ ![](https://box.kancloud.cn/ede837324d2a7db653ebbd17949ba55b_1154x318.png) # 浮点型变量 浮点型分为单精度型(float)和双精度型(double)两种 * float型数据占用4个字节(32bits)存储单元,提供的有效数字是6~7位 * double型数据占用8个字节(64bits)存储单元,提供的有效数字是15~16位 # siezof运算符 **计算的是在内存中的大小** sizeof是单目运算符,用来计算操作数在内存中占据的字节数,其操作数既可以是括在圆括号中的类型标识符,**其返回值是size_t类型,即无符号整数** ~~~ sizeof(short); //返回2 sizeof(long); //返回4 sizeof(int); //不确定,取决于不同的操作系统 ~~~ **返回的是占用空间大小是为这个变量开辟的大小,而不只是他用到的空间** # 数值类型 singned是有符号数 short是短整型,一般是int一半大小,在32位的windows下是2个字节 Long是长整型,在windows是4个字节,在32位linux是4字节,在64位linux下是8字节 Long long是长长整形,longlong在32位系统和64位系统下都是8个字节 unsigned int, unsigned short, unsigned long, ~~~ unsigned int b=100u; long long e =100ll; unsigned long f =100ul; ~~~ 在c语言中表达一个整数的常量,如果什么标识都不加,那么默认类型是singed int # 整数的溢出 当超过一个整型能够存放最大的范围时,整数会溢出,溢出有符号位溢出和最高位溢出的区别,符号位溢出会导致正负数发生变化,最高位溢出导致最高位丢失 # char类型 ''引起来的就是char的常量 'a'就是char类型的常量 "a"就是一个字符串类型的常量 char在内存中占用了一个字节,c语言中没有byte类型的数据,但可以用char来代替 unsigned char a;//定义了一个无符号的byte类型 char能有多大?-128到127之间, unsigned char范围是0到255之间 # 类型限定 register 把变量放在寄存器里面会提高效率 ~~~ register int b=0; //这个变量在寄存器里面,不在内存里面 ~~~ register是建议指令不是命令型指令,如果cpu有空闲寄存器就生效,如果没有就无效 --- volatile 代表定义一个变量,这个变量值可能在cpu指令外被改变 ~~~ volatile int a; //定义一个volatile类型的int变量 ~~~ 通过volatile定义的变量,编译器不会去优化这个变量相关的代码 --- const 定义个常量 # 字符串 字符串是内存中一段连续的char空间,以^\0^结尾 'a'在内存中是一个字符a "a"在内存中是2个字符,第一个是'a',第二个是'\0' "helloworld"在内存中是 'h' 'e' ... 'd' '\0' # scanf函数与getchar函数 getchar是从标准输入设备中读取一个char char a=getchar(); //从标准输入设备中读取一个char,赋值给a,是acsii码值 scanf通过%d转义的方式可以得到用户通过标准输入设备输入的整数 scanf("%d",&a); //这里一定要写取地址操作符 ![](https://box.kancloud.cn/8b9413bd7b42f35aee00b5a4ddc07f0a_469x141.png)