C语言中的格式字符+int等类型所占字节数

这篇博客介绍了C语言中常用的格式化输出函数printf,包括%d, %c, %f, %s等格式说明符的使用,以及浮点数的格式控制如%6.2f。还探讨了不同数据类型的字节大小,如sizeof(int), sizeof(long)等,并展示了如何通过sizeof运算符获取数据类型占用的内存大小。


DAY 3
加油!!!

常用字符%c%d%s%c及扩展

%d是用来输出十进制整型数据的实际长度输出;
%c是以字符形式输出,只输出一个字符;
%f是以小数形式输出单、双精度度数,隐含输出6位小数
%s是以字符形式输出,输出字符串;

%d  整型(int)

%ld 长整型(long)

%f  浮点型(float)

%lf 浮点型(double)

%6.2f 浮点型
      前面的6表示包括小数点在内的六位数,
      后面的.2表示小数点后有两位小数.

%c    单个字符

%s    字符串(char)

测试

int main()
{
float a = 3.0 / 5.0;
printf(“%6.2f”, a);
return 0;
}

** **0.60////////////////////////前面两位用空格代替
D:\编程\自学C语言\test_8_23\Debug\test_8_23.exe (进程 15964)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

进制字符%o %u %x

%o 八进制数

%u 无符号十进制数
 
%x 十六进制数

int,long,char等所占字节数

sizeof(long) :4
sizeof(short) :2
sizeof(char) :1
sizeof(float) :4
sizeof(double):8

D:\编程\自学C语言\test_8_23\Debug\test_8_23.exe (进程 26684)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

#include<stdio.h>
int main()
{
    printf("sizeof(int))  :%d\n",sizeof(int));
    printf("sizeof(long)  :%d\n",sizeof(long));
    printf("sizeof(short) :%d\n",sizeof(short));
    printf("sizeof(char)  :%d\n",sizeof(char));
    printf("sizeof(float) :%d\n",sizeof(float));
    printf("sizeof(double):%d\n",sizeof(double));
    return 0;
}

<think> 我们正在回答用户关于C语言变量类型字节数的问题。根据提供的引用信息,我们可以总结如下: 引用[2]提到:char变量占用1字节,并给出了示例代码验证。 引用[3]和引用[4]都提供了常见数据类型字节数,但需要注意不同系统(32位/64位)的差异,尤其是指针和long类型。 总结如下: 1. 基本整数类型: - char / unsigned char: 1字节 - short / unsigned short: 2字节 - int / unsigned int: 4字节(通常在32位和64位系统上都是4字节,但标准允许不同实现) - long / unsigned long: 在32位系统上为4字节,在64位系统上通常为8字节(注意:根据引用[4],指针在32位系统是4字节,64位是8字节,而long类型类似) - long long / unsigned long long: 8字节 2. 浮点类型: - float: 4字节 - double: 8字节 - long double: 12字节(引用[3])或根据实现可能不同(例如,在x86-64系统上通常是16字节) 3. 指针类型:在32位系统上为4字节,64位系统上为8字节(引用[1]和引用[4]) 4. 固定宽度整数类型(引用[4]): - uint8_t: 1字节 - uint16_t: 2字节 - uint32_t: 4字节 - uint64_t: 8字节 注意:C语言标准并没有严格规定每种类型的具体大小,只规定了它们的最小范围。因此,实际大小依赖于编译器和目标平台。我们可以使用sizeof运算符来获取特定平台上类型的大小。 为了验证,我们可以编写一个简单的程序: ```c #include <stdio.h> #include <stdint.h> int main() { printf("char: %zu\n", sizeof(char)); printf("short: %zu\n", sizeof(short)); printf("int: %zu\n", sizeof(int)); printf("long: %zu\n", sizeof(long)); printf("long long: %zu\n", sizeof(long long)); printf("float: %zu\n", sizeof(float)); printf("double: %zu\n", sizeof(double)); printf("long double: %zu\n", sizeof(long double)); printf("pointer: %zu\n", sizeof(int*)); return 0; } ``` 运行上述程序将输出当前平台上各类型的大小。 另外,引用[4]还提到有符号和无符号版本的大小相同,只是表示范围不同。 结论:在常见的32/64位系统中,大部分类型的大小如上所述,但long和指针的大小依赖于系统架构(32位或64位),而long double的大小则因编译器和平台而异。 因此,我们在编程时,尤其是涉及跨平台时,应使用sizeof运算符来获取确切的大小,避免硬编码。 </think> ### C语言常见数据类型字节数总结 根据引用资料[^2][^3][^4],C语言中常见数据类型字节数与系统架构相关(32位/64位)。以下是标准环境下的典型值: #### ✅ 基本数据类型 1. **字符型** - `char` / `unsigned char`:1字节(范围:-128~127 / 0~255) - 输出位符:`%c` 或 `%hhd`(有符号)、`%hhu`(无符号) 2. **整型** | 类型 | 32位系统 | 64位系统 | 输出位符 | |---------------------|----------|----------|------------| | `short` | 2字节 | 2字节 | `%hd` | | `int` | 4字节 | 4字节 | `%d` | | `long` | 4字节 | **8字节**| `%ld` | | `long long` | 8字节 | 8字节 | `%lld` | 3. **浮点型** - `float`:4字节(位符:`%f`) - `double`:8字节(位符:`%lf`) - `long double`:12字节(位符:`%Lf`) 4. **指针类型** - 指针变量(如 `int* ptr`) - 32位系统:4字节 - 64位系统:8字节 - 验证方法:`sizeof(ptr)`[^1] #### ✅ 固定宽度整数类型(`stdint.h`) | 类型 | 字节数 | 范围 | |-------------|--------|----------------| | `uint8_t` | 1 | 0~255 | | `uint16_t` | 2 | 0~65,535 | | `uint32_t` | 4 | 0~4,294,967,295| | `uint64_t` | 8 | 0~$2^{64}-1$ | --- ### ️ 关键注意事项 1. **系统依赖性** - `long` 和指针类型在64位系统中字节数翻倍[^4]。 - 使用 `sizeof` 运算符直接获取当前环境的准确大小(如 `sizeof(long)`)[^2][^1]。 2. **有符号 vs 无符号** - 无符号类型(如 `unsigned int`)与有符号类型字节数相同,仅范围不同[^4]。 3. **示例代码验证** ```c #include <stdio.h> int main() { printf("int: %zu\n", sizeof(int)); // 输出4 printf("指针: %zu\n", sizeof(int*)); // 32位输出4,64位输出8 printf("long: %zu\n", sizeof(long)); // 32位输出4,64位输出8 return 0; } ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值