数据类型和作用域
来源:互联网 发布:成都美食 知乎 编辑:程序博客网 时间:2024/04/27 14:15
基本数据类型
4 种基本数据类型:
整型、浮点型、指针:、聚合类型(数组和结构)
signed与unsigned:
数据分signed和unsigned的,默认是signed类型。
例如:
int a; //有符号的
unsigned int a ; //无符号的。
//各数据类型表示范围: signed char: -127 到 127 unsigned char: 0 到 255 short int : -32767 到 32767 unsigned short int : 0 到 65535 int : -32767 到 32767 unsigned int : 0 到 65535 long int : -2147483647 到 214783647 unsigned long int : 0 到 4294967295
1.整型
整型包括char、short、int和long类型。
sizeof() 返回类型存储所占字节数
sizeof(char)=1
sizeof(int)=4
注意:根据各计算机的不通,char、int等类型存储所占字节数不固定。
溢出:
超过计算机数据类型能表示的范围,分正溢出和负溢出。
例如:
#include < limits.h >中宏:INT_MAX和INT_MIN
INT_MAX:当前系统中整型数据(char,short,int,long)的最大表示范围
INT_MIN:当前系统中整型数据的最小表示范围
long m,n; //m和n都没有溢出//如何判断m+n溢出,如果直接计算m+n>INT_MAX,则m+n的值可能会溢出。if(m>INT_MAX-n) //>号两边都不会溢出,则可判断m+n是否溢出{ printf(“溢出\n”);}
2.枚举类型
枚举类型的值为符号常量
格式: enum 类型名{类型名的取值范围};
Eg :
enum Color{WHITE,BLACK,RED,GREEN,BLUE}; enum Jar_Type {CUP, PINT, QUART, HALF_GALLON, GALLON}; enum Jar_Type {CUP = 8, PINT = 16, QUART = 32, HALF_GALLON = 64, GALLON = 128};
enum.c
#include<stdio.h>int main(){ //枚举类型的定义,类似结构体的定义 enum Color { WHITE=0x001, //0b00001 BLACK=0x002, //0b00010 RED=0x004, //0b00100 GREEN=0x008, //0b01000 BLUE=0x010 //0b10000 }; //WHITE | BLACK=0b00011 //实体化枚举对象 if(color==BLUE) { printf(“this is blue.\n”); } return 0;}
3.浮点类型
浮点类型 包括:float, double, long double
sizeof(float)=4;sizeof(double)=8;
头文件 float.h 定义了 FLT_MIN, FLT_MAX, DBL_MIN, DBL_MAX,LDBL_MIN, LDBL_MAX 分别表示float, double, long double 所能 存储的最小值和最大值
浮点型(表达式) –> 整型转换时出现精度丢失
3.9 –> 3
整型表达式–>浮点型转换时精度丢失
float a=10/8 则a=1.00000
int num=10;//num的三等分的值-->保留3位小数float res=num/3.0;printf(“res=%.3f\n”,res);res=33.333
总结:先计算表达式的值,往精度高的类型转换,在看=左边的类型,将表达式的值转换为左边的类型
1e10==1*10^10
4.指针
指针即地址
int *p; //整型指针:指针指向整型数据char *p; //字符型指针:指针指向字符型数据
指针常量
Eg : int *p = 0x3300ff21;
字符串常量 :“ ”里面的内容
字符串 = 一串字符
//"HELLO"表现为第一个字符的地址char *str="HELLO";printf(“%s\n”,str);printf(“%c\n”,*(str+1));结果: HELLO E
进制
没开头 十进制 hex0 八进制 oct0x 十六进制 hex0b 二进制 binprintf("%d",022);
转义字符和特殊字符输出
转义字符:
- \n:换行
- \r:回到行首
- \b:后退一个字符
printf(“abc\refg\naa\bcc”);输出:efg //先打印abc \r回到行首则efg覆盖abc acc //\n换行,打印aa \b后退一个字符则cc覆盖一个a,结果为acc
打印特殊字符:
printf("\\"); //输出:\printf("%%"); //输出:%printf("\\n"); //输出:\nprintf("\\\'\"\n"); //输出:\'"
typedef
将较长的类型名转化为较短的类型。
enum Color color;typedef enum Color Color; //将enum Color类型替换为Color类型。Color color;
较易混淆的类型名:
int* a,b,c;a为int *类型b,c为int类型
typedef与#define的区别:
#define:纯文本替换#define intp int *intp a,b,c;a为int *类型b,c为int类型typedef:整体替换typedef int * intp;intp a,b,c; a、b、c均为int *类型
2.作用域
四种作用域:
文件作用域、函数作用域、代码块作用域、原型作用域
int a; //文件作用域int b(int c); //原型作用域int d(int e) { int f; //函数作用域 int g(int h); ...... { int f, g, i; //代码块作用域 ...... } { int i; ...... } }
例如:
#incude<stdio.h>int a=10; //文件作用域void fun(int c,int d){ int f=40; //fun()函数作用域 printf(“f in fun():%d\n”,f); //f=40}int main(void){ printf(“a:%d\n”,a); //a=10 int a=100; //main()函数作用域 int f=20; //main()函数作用域 { int f=30; //代码块作用域 fun(); printf(“f in code block:%d\n”,f); //f=30 int a=20; //代码块作用域 } printf(“f out code block:%d\n”,f); //f=20 printf(“a:%d\n”,a); //a=100,当变量同时处在文件作用域与全局作用域中时,变量会遵循就近原则,选择变量的值。 return 0;}
- 数据类型和作用域
- 数据类型和作用域链
- 数据类型和作用域链
- php的数据类型和变量的作用域
- 变量的作用域和基本数据类型的包装类
- js数据类型+js作用域
- javascript数据类型和var保留字的作用域的探索
- 黑马程序员-数据类型、变量作用域和数据结构的学习笔记
- C语言数据类型长度及作用域
- JAVA-2 数据类型,变量及其作用域
- MySQL数据类型中DECIMAL的作用和用法
- MySQL数据类型中DECIMAL的作用和用法
- MySQL数据类型中DECIMAL的作用和用法
- MySQL数据类型中DECIMAL的作用和用法
- Java值传递(基本数据类型和引用数据类型)和虚拟机内存作用
- 数据库数据类型的作用
- typedef声明数据类型作用
- Session和作用域
- Android studio如何使用SVN进行版本控制?
- 四一。 数论 。4.19(gcd 扩展gcd,素数 ,快速幂)
- Web应用——驾培管理系统之系统—用户管理(作者:小圣)
- 【oracle】dblink创建
- 1008
- 数据类型和作用域
- Leetcode no. 182
- 链表面试汇总
- 什么是IoC
- Java开发中的23种设计模式详解(转)
- SCI论文从入门到精通
- Python collections deque - double-ended queue ()
- VS2010 更改MFC标题栏图标和生成的执行文件图标
- Git 常用命令大全