C语言数据类型及变量整理
数据类型
获取int的字节数大小方法
printf("int bytes:%d",sizeof(int));
列表整理

Int 与 long int的区别
早期的C平台是16位int系统,int用二字节表示,范围是-32768~+32767;long是long int的简写,用4字节表示,范围是-2147483648~+2147483647。显然在早期平台下long能表示的整数范围要比int大得多。而时下的平台流行的是32位int系统,即4字节系统,int与long在这样的系统下已经没有区别了,它们都是4字节带符号整数,表数范围都是-2147483648~+2147483647。
数据溢出
当变量大于类型的最大值或者小于类型的最小值时,该变量的值会进行跳转,如最大值加一则是最小值。
#include<stdio.h>
void main(){
char min=--;
char max=+;
printf("min-1=%d \r\n",min); //输出: 127
printf("max+1=%d \r\n",max); //输出: -128
}
进制
int i=; /* 十进制 */
int i=; /* 八进制 */
int i=0x04; /* 十六进制 */
unsigned int i=60u; /* 无符号整数 */
long int i=60l; /* 长整数 */
unsigned long int i=60ul; /* 无符号长整数 */
静态变量与函数
只用于本文件(当前点C文件)的变量或函数要全部使用static关键字声明
静态变量
0、静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响,不可用extern实现夸文件访问
1、静态变量会自动赋有初值0,而普通变量编译器不会自动赋初值
2、局部静态变量放置在数据区,所以不会因函数的消失而死亡,但寄生于函数之上。全局静态变量与全局变量类似。
3、静态变量重复定义时,局部静态变量优先级高,但只作用于局部
#include<stdio.h>
static int i;//全局静态变量
void fun1(){
static int i;//局部静态变量
printf("%d\r\n",i);//0-9(局部)
i++;
}
void main(){
int x;
for(x=;x<;x++) fun1();
printf("---%d\r\n",i);//0(全局)
}
静态函数
0、在函数的返回类型前加上static,就是静态函数
1、静态函数只能在声明它的文件中可见,其他文件不能引用该函数
2、不同的文件可以使用相同名字的静态函数,互不影响
枚举
enum Ex{
D0,D1,D2,D3 //0,1,2,3
};
enum Ex{
D0=,D1,D2,D3 //100,101,102,103
}ee;
enum Ex{
D0,D1=,D2,D3 //0,200,201,202
}ee;
printf("%d\r\n",D2);
结构体
声明
方法1:
struct 结构体名
{
成员列表
};
struct 结构体名 变量1,变量2;
方法2
struct 结构体名
{
成员列表 }变量1,变量2;
方法3
struct
{
成员列表 }变量1,变量2;
方法4
typedef struct
{
成员列表; }结构体别名;
结构体别名 变量1,变量2;
初始化
方法1
struct
{
成员列表 }变量1={成员1值,成员2值,成员3值……};
方法2
memset(&结构体变量名,,sizeof(结构体变量名)); //将所有全部变量清零
引用(使用)成员:
结构体变量
struct 结构体名 变量1,变量2;
变量1.成员名
结构体指针变量
struct 结构体名 *变量1;
变量1->成员名
C文件间共享变量
extern
extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。
可以经extern写在头文件中,变量的定义写在任意一个点C文件(如main.c)中,此后只要包含该头文件夹即可实现变量的共享使用
举个栗子:
C1.h,声明函数c1fun()
#ifndef _C1_H_
#define _C1_H_
void c1fun(char *strx);
#endif
C1.c,实现函数c1fun()
#include<stdio.h>
#include"c1.h"
char *wu;
void c1fun(char *strx){
wu=strx;
}
Main.c,调用函数c1fun(),并读取外部变量wu的值
#include <stdio.h>
#include "c1.h"
extern char *wu;
void main(){
c1fun("123456");
printf("===:%s",wu);//输出:123456
}
#define
针对不改变的量,可以在头文件中声明,在其他c文件中包含即可使用
如c1.h中:
#define DONG "dongxiaodong"
Mian.c中:
#include"c1.h"
……
printf("===:%s",DONG);
……
宏定义的使用
#define的使用
宏定义常量
#define DONG '2' //字符
#define DONG "is str" //字符串
#define DONG 12 //数字
#define DONG 13.36 //浮点数
宏定义范围
#define P 123
……
#undef P
typedef的使用
宏定义之类型重命名
typedef unsigned char u8;
宏定义之类型重命名对比
#include<stdio.h> #define ch1 char*
typedef char* ch2; void main(){
ch1 a,b;//char *a,b;
ch2 c,d;//char *c,*d;
//输出: --8,1,8,8--
printf("--%d,%d,%d,%d--",sizeof(a),sizeof(b),sizeof(c),sizeof(d));
}
带参数的宏定义
#include<stdio.h> #define Max(x,y) ((x>y)?x:y)
#define Add(x,y) (x+y); void main(){
int i=Max(,);
int ii=Add(,) //此处无分号
printf("max:%d,add:%d",i,ii);//max:10,add:3
}
参考:
https://blog.csdn.net/xlh006/article/details/81540703
https://blog.csdn.net/kuniqiw/article/details/84495732
C语言数据类型及变量整理的更多相关文章
- 02-Go语言数据类型与变量
Go基本类型 布尔型: bool - 长度: 1字节 - 取值范围: true,false - 注意事项: 不可以用数字代表true或false 整型: int/uint - 根据运行平台可能为32或 ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- iOS开发环境C语言基础 变量 、 数据类型和变量赋值 、 其他 、 运算符
1 变量使用常用错误汇总 1.1 问题 在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,不出错.即使出现错误也可以很快地找到问题所在. 1.2 方案 变量在使用的过 ...
- python语言学习7——数据类型和变量
整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...
- Go语言入门(二)Go语言中的变量、常量、数据类型、流程控制以及函数
Go语言中的变量 通常用var关键声明变量,有常规方式和简化方式. 常规方式: var name1 type1 name1 = value1 //赋值 简化方式: var name2 = value1 ...
- C语言中数据类型和变量
C语言中的数据类型 数据类型的本质,固定大小内存块的别名. 数组名代表数组首元素的地址. 数组首元素的地址,&代表整个数组的地址. 数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类 ...
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- C语言 遍历流程 变量生命周期
来自c程序设计 谭浩强 程序编译流程 运行c程序的步骤 在编好一个c程序后.怎样上机进行编译运行呢?一般要经过一下几个步骤: 上机输入和编辑源程序.通过键盘和计算机输入程序,如果发现有错误,要及时改正 ...
- Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
一. 数据类型与变量 1.数据类型 整数 #Python在程序中的表示方法和数学上的写法一模一样,-1,0,1都是整数. 浮点数 1 #浮点数就是小数. 字符串 1 #在Python中字符串是以 ...
随机推荐
- HTML连载9-video标签的第二种格式&audio标签
一.video第二种格式 1.背景:由于视频数据非常重要,所以五大浏览器厂商都不愿意支持别人的视频格式,所以导致了没有一种视频格式是所有浏览器都支持的.这个时候W3C为了解决这个问题,所以推出了第二种 ...
- 生产环境MySQL优化
a:硬件的优化: 1. 采用64位cpu,cpu至少4颗,L2缓存越大越好2. 内存要大,32-64G运行1-2个实例,96-128G运行3-4个实例3. 机械盘选用sas盘,转速15000以上,有可 ...
- linux下安装Nginx1.16.0
因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版. 服务器环境为centos,接下来是详细步骤: 安装必要依赖插件 yum ...
- 06、MySQL—列类型
1.整数类型 I.有符号整型 (1) Tinyint:单字节整形,系统采用一个字节来保存的整形:一个字节 = 8位,最大能表示的数值是0-255. (2) Smallint:双字节整形,系统采用两个字 ...
- HBase 学习之路(十一)—— Spring/Spring Boot + Mybatis + Phoenix 整合
一.前言 使用Spring+Mybatis操作Phoenix和操作其他的关系型数据库(如Mysql,Oracle)在配置上是基本相同的,下面会分别给出Spring/Spring Boot 整合步骤,完 ...
- There is no getter for property named 'username' in 'class Model1.User'-----报错解决
There is no getter for property named 'username' in 'class Model1.User' -----Model Model1.User'中没有名为 ...
- linuxprobe培训第1节课笔记2019年7月5日
报了老刘的RHCE培训,这是老刘上课笔记简略版. 老刘在课上介绍了开源共享精神和大胡子(Richard M. Stallman—GNU创始人).linux发展史(Linus Benedict Torv ...
- java虚拟机-程序计数器PC Register
什么是程序计数器? 程序计数器是一块 较小 的内存空间,它可以看做是当前线程所执行的字节码的 行号指示器 :在虚拟机的概念模型里(仅仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解 ...
- 并发编程-concurrent指南-ReadWriteLock
ReadWriteLock也是一个接口,在它里面只定义了两个方法: public interface ReadWriteLock { /** * Returns the lock used for r ...
- 阿里云服务器纯净版centos7.4 LNMP安装
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...