当前位置: 首页 > news >正文

C语言数据类型与变量详解

数据类型概述

C语言中的数据类型是用于声明不同类型变量或函数的扩展系统。变量的类型决定了它在存储中占据的空间大小以及如何解释所存储的位模式。

数据类型分类

类型描述
基本类型算术类型,分为整数类型和浮点类型
枚举类型算术类型,用于定义只能分配某些离散整数值的变量
void类型表示没有可用值
派生类型包括指针类型、数组类型、结构体类型、联合类型、函数类型

数组类型和结构类型统称为集合类型。函数的类型指定函数返回值的类型。

整数类型

下表列出了标准整数类型的存储大小和值范围:

类型容量取值范围
char1 byte-128 to 127 或 0 to 255
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int2 或 4 bytes-32,768 to 32,767 或 -2,147,483,648 to 2,147,483,647
unsigned int2 或 4 bytes0 to 65,535 或 0 to 4,294,967,295
short2 bytes-32,768 to 32,767
unsigned short2 bytes0 to 65,535
long8 bytes-9223372036854775808 to 9223372036854775807
unsigned long8 bytes0 to 18446744073709551615

获取类型大小的示例

c

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>int main(int argc, char** argv) {printf("CHAR_BIT    :   %d\n", CHAR_BIT);printf("CHAR_MAX    :   %d\n", CHAR_MAX);printf("CHAR_MIN    :   %d\n", CHAR_MIN);printf("INT_MAX     :   %d\n", INT_MAX);printf("INT_MIN     :   %d\n", INT_MIN);printf("LONG_MAX    :   %ld\n", (long) LONG_MAX);printf("LONG_MIN    :   %ld\n", (long) LONG_MIN);printf("SCHAR_MAX   :   %d\n", SCHAR_MAX);printf("SCHAR_MIN   :   %d\n", SCHAR_MIN);printf("SHRT_MAX    :   %d\n", SHRT_MAX);printf("SHRT_MIN    :   %d\n", SHRT_MIN);printf("UCHAR_MAX   :   %d\n", UCHAR_MAX);printf("UINT_MAX    :   %u\n", (unsigned int) UINT_MAX);printf("ULONG_MAX   :   %lu\n", (unsigned long) ULONG_MAX);printf("USHRT_MAX   :   %d\n", (unsigned short) USHRT_MAX);return 0;
}

运行结果:

text

CHAR_BIT    :   8
CHAR_MAX    :   127
CHAR_MIN    :   -128
INT_MAX     :   2147483647
INT_MIN     :   -2147483648
LONG_MAX    :   9223372036854775807
LONG_MIN    :   -9223372036854775808
SCHAR_MAX   :   127
SCHAR_MIN   :   -128
SHRT_MAX    :   32767
SHRT_MIN    :   -32768
UCHAR_MAX   :   255
UINT_MAX    :   4294967295
ULONG_MAX   :   18446744073709551615
USHRT_MAX   :   65535

浮点类型

类型容量取值范围精度
float4字节1.2E-38 至 3.4E+38小数点后6位
double8字节2.3E-308 至 1.7E+308小数点后15位
long double10字节3.4E-4932 至 1.1E+4932小数点后19位

浮点类型示例

c

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>int main(int argc, char** argv) {printf("Storage size for float : %d \n", sizeof(float));printf("FLT_MAX     :   %g\n", (float) FLT_MAX);printf("FLT_MIN     :   %g\n", (float) FLT_MIN);printf("-FLT_MAX    :   %g\n", (float) -FLT_MAX);printf("-FLT_MIN    :   %g\n", (float) -FLT_MIN);printf("DBL_MAX     :   %g\n", (double) DBL_MAX);printf("DBL_MIN     :   %g\n", (double) DBL_MIN);printf("-DBL_MAX    :   %g\n", (double) -DBL_MAX);printf("Precision value: %d\n", FLT_DIG );return 0;
}

运行结果:

text

Storage size for float : 4 
FLT_MAX      :   3.40282e+38
FLT_MIN      :   1.17549e-38
-FLT_MAX     :   -3.40282e+38
-FLT_MIN     :   -1.17549e-38
DBL_MAX      :   1.79769e+308
DBL_MIN      :   2.22507e-308
-DBL_MAX     :  -1.79769e+308
Precision value: 6

void类型

void类型表示没有可用值,在三种情况下使用:

类型说明
函数返回为空不返回任何值的函数,返回类型为void。例如:void exit(int status);
函数参数为void不接受任何参数的函数。例如:int rand(void);
void指针类型为void *的指针表示对象的地址,但不表示其类型。例如:void *malloc(size_t size);

变量

变量是程序可以操作的存储区域的名称。C语言中的每个变量都有特定的类型,决定了变量的内存大小、布局、可存储的值范围以及可应用的操作集合。

变量命名规则

  • 可以由字母、数字和下划线字符组成

  • 必须以字母或下划线开头

  • 大写和小写字母是不同的(C语言区分大小写)

基本变量类型

类型描述
char通常是一个八位位组(一个字节),整数类型
int机器最自然的整数大小
float单精度浮点值
double双精度浮点值
void表示没有类型

变量定义

变量定义告诉编译器在何处以及为变量创建多少存储空间。

语法:

c

type variable_list;

有效声明示例:

c

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

变量初始化:

c

type variable_name = value;

示例:

c

extern int d = 3, f = 5;    // d和f的声明
int d = 3, f = 5;           // d和f的定义和初始化
byte z = 22;                // z的定义和初始化
char x = 'x';               // 变量x的值为'x'

注意: 对于没有初始化程序的定义,具有静态存储持续时间的变量隐式初始化为NULL;所有其他变量的初始值未定义。

变量声明

变量声明向编译器保证存在具有给定类型和名称的变量。

示例:

c

#include <stdio.h>// 变量声明:
extern int a, b;
extern int c;
extern float f;int main () {/* 变量定义: */int a, b;int c;float f;/* 实际初始化 */a = 10;b = 20;c = a + b;printf("value of c : %d \n", c);f = 70.0/3.0;printf("value of f : %f \n", f);return 0;
}

运行结果:

text

value of c : 30
value of f : 23.333334

函数声明示例

c

// 函数声明
int func();int main() {// 函数调用int i = func();
}// 函数定义
int func() {return 0;
}

左值和右值

C语言中有两种表达式:

左值(lvalue)

  • 引用内存位置的表达式

  • 可能出现在赋值的左侧或右侧

  • 变量是左值

右值(rvalue)

  • 存储在内存中某个地址处的数据值

  • 只能出现在赋值的右侧,不能出现在左侧

  • 数字文字是右值

示例:

c

int g = 20;  // 有效的:g是左值,20是右值
10 = 20;     // 无效的:10是右值,不能出现在赋值左侧

通过理解C语言的数据类型和变量概念,程序员可以更有效地管理内存和设计程序结构,为后续学习指针、数组、结构体等复杂数据类型奠定基础。

http://www.dtcms.com/a/422804.html

相关文章:

  • 【开题答辩全过程】以 php厦门旅游信息网站管理系统开题为例,包含答辩的问题和答案
  • 《重构工业运维链路:三大AI工具让设备故障“秒定位、少误判”》
  • 大模型的第一性原理考量:基于物理本质与数学基础的范式重构
  • Ubuntu 系统安装 Prometheus+Grafana(附shell脚本一键部署↓)
  • Airbnb内部核心键值存储系统 Mussel 已完成从 v1 到 v2 的重构升级
  • 漳州做网站配博大钱少awordpress国内网站吗
  • 在用户调研中应用卡尔曼滤波:用动态思维重构认知更新
  • [免费]基于Python的在线音乐网站系统(后端Django)【论文+源码+SQL脚本】
  • 网站建设后期出现的问题手机网站开发前台架构
  • 首饰设计网站大全如何选择昆明网站建设
  • MapDistill:通过相机 - 激光雷达融合模型蒸馏提升高效基于相机的高清地图构建性能
  • 安卓开发---在适配器中使用监听器
  • 【COT】PromptCoT 2.0少样本训练 CoT
  • 鸿蒙应用开发和安卓应用开发的区别
  • UNIX下C语言编程与实践12-lint 工具使用指南:C 语言源代码语法与逻辑错误检查实战
  • UNIX下C语言编程与实践5-C 语言编译器 cc(gcc/xlc)核心参数解析:-I、-L、-D 的使用场景与实例
  • 机器视觉的双相机对位模切应用
  • 高档网站设计wordpress好用的商城主题
  • 植物大战僵尸融合版下载安装教程【PC/安卓/iOS 完整攻略 + 常见问题解决】
  • 厦门做网站价格想学网站建设与设计的书籍
  • 【TCSVT→Neurocomputing→ASOC投稿】记一次旷日持久的投稿经历
  • namespace 扩展
  • C语言——深入解析C语言指针:从基础到实践从入门到精通(一)
  • leetcode430:扁平化多级双向链表
  • 网站项目开发收费标准360网站名片怎么做的
  • 分布式秒杀系统设计方案
  • 分布式短链接系统设计方案
  • 分布式光纤声波振动与AI的深度融合:开启智慧感知新时代
  • 电商网站设计论文新网金商网站
  • [pdf、epub]320道《软件方法》强化自测题业务建模需求分析共279页(202509更新)