C语言占位符及各种变量占用字节数 您所在的位置:网站首页 c语言中变量所占字节 C语言占位符及各种变量占用字节数

C语言占位符及各种变量占用字节数

2023-12-18 02:36| 来源: 网络整理| 查看: 265

简介:

自己复习C语言的时候总结了一下格式化输入输出占位符,以及各种变量的占用字节数,还有没提到的后面慢慢补充。(第一次学着发博客总结^-^,也可以帮助自己后续回顾)

部分变量类型及占用字节数:

(C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息)

c主要有以下几种变量,还有指针变量等等,对于占用字节数依据编译器不同,以及操作系统不同,得到的结果可能不同,本结果在Microsoft Visual Studio 2019 的32位及64位操作系统下得到。

c语言占用字节系统类型32位64位16位char(存储为int)111short int222int442long44 long long88 一般情况下windows64位一般使用LLP64模型无符号与有符号占用字节数相同float4(默认6位精度)4(默认6位精度) double88 long double88(依据编译器不同,C99只规定大于等于double)_Complex复数的实部与虚部都基于实浮点类型构成_Imaginary

不同编译器的数据模型不同,导致long int占用4个字节或8个字节,本身C语言规定的是long≥int。不同编译器的结果参考如下:

编译器的数据模型 此处参考原文链接:64位操作系统下,关于int和long占用字节数同为4问题_静叶沉浮-CSDN博客_64位系统long

Datetype  LP64   ILP64   LLP64   ILP32    LP32

char            1          1           1           1           1

short           2          2           2           2           2

int               4          8           4           4           2

long            8          8           4           4           4

long long    8

pointer        8          8           8           8           8 一般情况下windows64位一般使用LLP64模型 64位Unix,Linux使用的是LP64模型

格式化输入输出占位符归纳:

此处仅归纳了部分变量的占位符,以及一些函数,例如sizeof的占位符:

针对整型int变量以及浮点型float采用以下代码测试其占用字节数:

#include int main(void) { short a = 1; int b = 2; long c = 3; long long d = 4; unsigned short e = 5; unsigned f = 6; unsigned long g = 7; unsigned long long h = 8; long double k = 1.0; double m = 9.0; printf("The signed type occupy %zd, %zd, %zd, %zd bytes respectively.\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d)); printf("The unsigned type occupy %zd, %zd, %zd, %zd bytes respectively.\n", sizeof(e), sizeof(f), sizeof(g), sizeof(h)); printf("long double: %zd, double: %zd", sizeof(k), sizeof(m)); return 0; }

 64位和32位编译器下的输出相同: The signed type occupy 2, 4, 4, 8 bytes respectively. The unsigned type occupy 2, 4, 4, 8 bytes respectively. long double: 8, double: 8

sizeof( )函数: sizeof函数在32位操作系统下,返回数据类型为long int,64位系统下返回为long long类型,因此占位符分别用%ld,%lld。C99和C11标准提供了%zd转换说明用以匹配sizeof返回类型。因此大部分情况下都可使用%zd,而且对于strlen()同样适用。

在C primer plus中还讲到了printf()中的一些其他转换修饰符:

 先归纳到这儿吧,太久没打过代码TAT



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有