讲师中心 微信公众号
AI工具推荐 视频效率加速

C语言数据类型以及表示方式_常量书写规则与变量存储格式解析

落伟大大_5154

落伟大大_5154

发布时间:2026-02-14 18:37:43

|

961人浏览过

|

来源于php中文网

原创

整型常量需按进制规范书写:十进制不加前缀,超INT_MAX须加L/LL;八进制以0开头且仅含0–7;十六进制用0x/0X,推荐大写字母;无符号数显式加U;char符号性不固定,应明确使用signed char或unsigned char;浮点数遵循IEEE 754,比较时禁用==而用fabs(a-b)。

c语言数据类型以及表示方式_常量书写规则与变量存储格式解析

整型常量怎么写才不会被编译器当错?

整型常量写错最常见的是进制混淆和后缀缺失。比如 0123 看起来像一百二十三,实际是八进制(以 0 开头),值为 83;0xABC 没问题,但 0Xabc 在老编译器里可能报错(大小写敏感性不一);更大的数如 10000000000(100亿)在 32 位 int 上会溢出,必须加 LL 后缀变成 10000000000LL 才能进 long long。

实操建议:

立即学习“C语言免费学习笔记(深入)”;

  • 十进制 不加前缀,但超 INT_MAX(通常是 2147483647)就得手动加 L 或 LL
  • 八进制 必须以 0 开头,且只含 0–7,08、09 直接编译失败
  • 十六进制 用 0x 或 0X,字母推荐大写(0xFF 比 0xff 更易读,也避开了某些嵌入式工具链的大小写处理 bug)
  • 带符号性要显式控制:无符号常量加 U,比如 65535U 强制进 unsigned int,避免和负数比较时发生意外提升

char 类型到底是 signed 还是 unsigned?

这不是语言标准规定的,而是由编译器和平台决定的。GCC 在 x86_64 Linux 默认是 signed char,但 ARM Cortex-M 的裸机编译器(如 arm-none-eabi-gcc)常默认 unsigned char。这意味着同样一段代码:char c = 0xFF; printf("%d\n", c);,在前者输出 -1,后者输出 255。

实操建议:

立即学习“C语言免费学习笔记(深入)”;

  • 绝不要依赖 char 的默认符号性——需要小整数时,明确用 signed char 或 unsigned char
  • 做字节操作(比如解析网络包、内存拷贝)一律用 unsigned char,避免高位为 1 时符号扩展污染计算
  • 数组索引、计数器场景下,unsigned char 可多表示一个正数(0–255),但要注意 u_char i = 0; i--; 会绕回 255,不是 -1

float 和 double 在内存里长什么样?

C 标准只要求 float 至少 32 位、double 至少 64 位,但几乎所有现代平台都遵循 IEEE 754。这意味着 float 是 1-8-23 结构(符号-指数-尾数),double 是 1-11-52。关键点在于:它们存储的是二进制浮点,不是十进制——所以 0.1 + 0.2 != 0.3 是必然结果,不是 bug。

实操建议:

立即学习“C语言免费学习笔记(深入)”;

  • 比较浮点数别用 ==,用 fabs(a - b) ,其中 <code>EPS 要匹配类型:对 float 用 1e-6F,double 用 1e-12
  • 整数范围安全上限:能精确表示的连续整数,float 最高到 16777216(2²⁴),double 到 9007199254740992(2⁵³);超过就“丢精度”,比如 (float)16777217 == (float)16777216 为真
  • 结构体里混用 float 和 int 时注意对齐:很多平台要求 float 4 字节对齐,double 8 字节对齐,字段顺序不当会悄悄增加 padding

变量声明时加 const 和不加,存储位置真不一样?

不一定。加 const 只是告诉编译器“这个值不该被改”,不强制进只读段。比如 const int x = 5;,GCC 常把它优化成立即数,根本不出现在数据段;但 const int arr[] = {1,2,3}; 就大概率放进 .rodata,尝试 *(int*)&arr[0] = 99; 会在运行时报 Segmentation fault(取决于 OS 是否启用写保护)。

实操建议:

立即学习“C语言免费学习笔记(深入)”;

  • const 本质是编译期契约,不是运行期保护。想真正防改,得靠链接脚本或 __attribute__((section(".my_rodata"))) 配合 MMU 设置
  • 全局 const 变量默认有内部链接(static 效果),如果要在多个文件用,得加 extern const int X; 声明 + 一个定义(不加 extern)
  • 指针的 const 位置很关键:const char *p 表示内容不可改,char * const p 表示指针地址不可改,const char * const p 两者都不可改——漏掉任一 const 都可能让函数接口语义变弱

事情说清了就结束。最麻烦的其实是跨平台移植时,同一份代码在不同编译器下对 char 符号性、enum 底层类型、sizeof(long) 的处理差异——这些不会报错,但会让数值逻辑突然翻车。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3031

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

554

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

522

2026.02.12

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

6727

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

784

2025.10.23

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6124

2023.10.24

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

808

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1029

2023.11.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Reference
C++ Reference

共0课时 | 0人学习

RabbitMQ 教程手册
RabbitMQ 教程手册

共0课时 | 0人学习

C# 教程
C# 教程

共94课时 | 22.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn